精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

10分鐘學(xué)會(huì)Bash調(diào)試

系統(tǒng) Linux
shell 是用戶和操作系統(tǒng)交互的一個(gè)程序,經(jīng)常用于執(zhí)行一些自動(dòng)化或者重復(fù)繁瑣的任務(wù),現(xiàn)在所有的 Linux 系統(tǒng)基本都自帶了該程序,我們只需要編寫好shell腳本,直接執(zhí)行就可以了。

[[411387]]

本文轉(zhuǎn)載自微信公眾號(hào)「Linux開發(fā)那些事兒」,作者LinuxThings 。轉(zhuǎn)載本文請(qǐng)聯(lián)系Linux開發(fā)那些事兒公眾號(hào)。

shell 是用戶和操作系統(tǒng)交互的一個(gè)程序,經(jīng)常用于執(zhí)行一些自動(dòng)化或者重復(fù)繁瑣的任務(wù),現(xiàn)在所有的 Linux 系統(tǒng)基本都自帶了該程序,我們只需要編寫好shell腳本,直接執(zhí)行就可以了,不需要額外安裝軟件、配置編譯環(huán)境,可以說使用起來非常的方便,但是它在調(diào)試方面常常令人頭大,本文主要介紹shell腳本常用的調(diào)試方法

調(diào)試常用選項(xiàng)

調(diào)試shell腳本時(shí),常常用到幾個(gè)調(diào)試選項(xiàng),讓腳本在執(zhí)行的過程中,會(huì)輸出一些調(diào)試信息,根據(jù)調(diào)試信息,就可以定位出具體出問題的代碼

具體的選項(xiàng)以及說明如下:

選項(xiàng) 說明
-x 輸出結(jié)果之前,先輸出執(zhí)行的命令
-u 遇到不存在的變量就會(huì)報(bào)錯(cuò),并停止執(zhí)行
-e 發(fā)生錯(cuò)誤時(shí),終止執(zhí)行
-n 檢查語法錯(cuò)誤
-o pipefail 管道子命令發(fā)生錯(cuò)誤,終止執(zhí)行

跟蹤腳本的執(zhí)行

  • 輸出調(diào)試信息

通常,腳本執(zhí)行之后,只有結(jié)果輸出,當(dāng)運(yùn)行多條命令的時(shí)候,就會(huì)連續(xù)輸出多條結(jié)果,無法分清哪條命令對(duì)應(yīng)哪條結(jié)果, 使用 -x選項(xiàng),會(huì)先輸出將要執(zhí)行的那一行命令的調(diào)試信息,然后再執(zhí)行命令

現(xiàn)有腳本ta.sh,功能是輸出當(dāng)前日期, 內(nèi)容如下

  1. #!/bin/bash 
  2.  
  3. echo "today is :"$(date +'%Y-%m-%d'

我們使用 -x 選項(xiàng)來執(zhí)行腳本,結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# bash -x ta.sh  
  2. ++ date +%Y-%m-%d 
  3. + echo 'today is :2021-07-10' 
  4. today is :2021-07-10 

從結(jié)果中可以看到,在執(zhí)行前打印出了每一行命令,行前面的 + 號(hào)表示調(diào)試信息,它實(shí)際是環(huán)境變量 PS4 的值, PS4 的第一個(gè)字符會(huì)根據(jù)嵌套層次進(jìn)行重復(fù),命令所處的層次越深,前面的 + 號(hào)越多

結(jié)果中第一行表示執(zhí)行 date +'%Y-%m-%d' 命令,它處于第內(nèi)層,所以打印兩個(gè) + 號(hào) ,第二行表示執(zhí)行 echo "today is :"$(date +'%Y-%m-%d') 命令,它處于外層,只打印一個(gè) + 號(hào)

把 -x 選項(xiàng)放到 #!/bin/bash 語句后面,執(zhí)行的時(shí)候不帶 -x 也能實(shí)現(xiàn)同樣的效果,上述腳本只需要把 #!/bin/bash 改成 #!/bin/bash -x 即可

  • 輸出行號(hào)

上面示例中腳本內(nèi)容很少,試想下,如果腳本內(nèi)容達(dá)到了幾百行或者幾千行之后,輸出每一行命令的提示信息,閱讀起來就很費(fèi)勁了,在這種情況下,我們?cè)诿啃休敵銮凹由闲刑?hào),可以直接定位到具體的行

修改下 ta.sh 腳本,修改后的內(nèi)容如下

  1. #!/bin/bash  
  2.  
  3. PS4='+${BASH_SOURCE}:${LINENO} ' 
  4. echo "start..." 
  5. set -x 
  6. echo "today is :"$(date +'%Y-%m-%d'
  7. set +x 
  8. echo "end..." 

修改之后的腳本加入了 PS4 變量, 它是調(diào)試信息的前綴,默認(rèn)值是 "+", 我們可以修改它的值,達(dá)到輸出的調(diào)試信息中包含行號(hào)的目的

上述代碼中 "${BASH_SOURCE}" 表示 當(dāng)前執(zhí)行的shell腳本的相對(duì)路徑,在這里用來表示腳本文件名,"${LINENO}" 表示行號(hào),修改 PS4 之后,輸出的調(diào)試信息就會(huì)包括 腳本名字以及行號(hào)

我們執(zhí)行腳本,看下結(jié)果

  1. [root@VM-0-2-centos shell_debug]# bash -x ta.sh  
  2. + PS4='+${BASH_SOURCE}:${LINENO} ' 
  3. +ta.sh:4 echo start... 
  4. start... 
  5. ++ta.sh:5 date +%Y-%m-%d 
  6. +ta.sh:5 echo 'today is :2021-07-10' 
  7. today is :2021-07-10 
  8. +ta.sh:6 echo end... 
  9. end... 

從結(jié)果可以看出,每一行命令的調(diào)試信息中都包含了文件名和行號(hào)

  • 輸出部分調(diào)試信息

有時(shí),我們只需要輸出部分調(diào)試信息,這個(gè)時(shí)候就需要我們手動(dòng)去設(shè)置 -x 選項(xiàng)了,把需要輸出調(diào)試信息的命令放到 set -x 和set +x 之間

修改下 ta.sh 腳本,內(nèi)容如下

  1. #!/bin/bash 
  2.  
  3. echo "test..." 
  4.  
  5. set -x 
  6. echo "today is :"$(date +'%Y-%m-%d'
  7. set +x 
  8.  
  9. echo "finish..." 

執(zhí)行腳本,結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# ./ta.sh  
  2. [root@VM-0-2-centos shell_debug]# ./ta.sh  
  3. test... 
  4. ++ date +%Y-%m-%d 
  5. + echo 'today is :2021-07-10' 
  6. today is :2021-07-10 
  7. set +x 
  8. finish... 

從結(jié)果可以看出,只有 echo today is :"$(date +'%Y-%m-%d') 命令輸出了調(diào)試信息,set -x 相當(dāng)于開啟調(diào)試信息,set +x 則是關(guān)閉調(diào)試信息

這里需要注意下,腳本中使用了 set -x 時(shí) , 執(zhí)行的時(shí)候就不要再加 -x 了

日志打印

通過打印日志來調(diào)試shell腳本是常用的方式,在一行命令前后打印變量值或者命令結(jié)果,通過日志來判斷是否有錯(cuò)誤

但是,當(dāng)腳本比較長(zhǎng)的時(shí)候,需要打印的日志就有點(diǎn)兒多了,而且,調(diào)試完了后,這些調(diào)試日志就不再需要了,這時(shí)就要一行行的刪掉日志打印

下面介紹一種方法,把腳本中所有的日志打印加一個(gè)開關(guān),當(dāng)開關(guān)打開的時(shí)候,就會(huì)輸出調(diào)試相關(guān)的日志,不需要的時(shí)候,直接關(guān)閉開關(guān)即可

現(xiàn)有腳本 debug1.sh, 內(nèi)容如下

  1. #!/bin/bash 
  2.  
  3. #調(diào)試開關(guān), on 表示開啟,其他表示關(guān)閉 
  4. IS_DEBUG="on" 
  5. #調(diào)試開關(guān)函數(shù) 
  6. function _DEBUG() 
  7.    [ "$IS_DEBUG" == "on" ] && $@ 
  8.  
  9. va=1 
  10. _DEBUG echo 'old value:'$va 
  11. #變量val加1 
  12. let va++ 
  13. echo 'new value:'$va 

上述腳本中,IS_DEBUG變量是調(diào)試開關(guān),"on" 表示開啟,其他表示關(guān)閉

_DEBUG() 是調(diào)試開關(guān)函數(shù),它的功能是:如果 IS_DEBUG 為 "on" ,執(zhí)行后面的命令,否則忽略

先打開調(diào)試開關(guān), 執(zhí)行腳本,結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# ./debug1.sh  
  2. old value:1 
  3. new value:2 

再關(guān)閉調(diào)試開關(guān),執(zhí)行腳本,結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# ./debug1.sh  
  2. new value:2 

從上面兩組測(cè)試結(jié)果可以看出,當(dāng)打開調(diào)試開關(guān),也即設(shè)置 IS_DEBUG="on" 后, 語句 _DEBUG echo 'old value:'$va 會(huì)執(zhí)行 echo 'old value:'$va 命令,當(dāng) IS_DEBUG="off" 時(shí), 就會(huì)忽略 echo 'old value:'$va 命令

所以,當(dāng)調(diào)試的時(shí)候,打開調(diào)試開關(guān),調(diào)試完成之后,腳本不需要做任何修改,只需要關(guān)閉開關(guān),調(diào)試相關(guān)的命令就都不會(huì)執(zhí)行了

常見的錯(cuò)誤處理

  • 不存在的變量

執(zhí)行腳本的時(shí)候,遇到不存在的變量,默認(rèn)會(huì)忽略它

現(xiàn)有腳本 td.sh, 內(nèi)容如下

  1. #!/bin/bash 
  2.  
  3.  
  4. echo "start..." 
  5. echo $ta 
  6. echo "end..." 

腳本中 ta 是一個(gè)不存在的變量,腳本執(zhí)行結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# ./td.sh  
  2. start... 
  3.  
  4. end... 

可以看到,echo $ta 輸出了一個(gè)空行,腳本直接忽略了不存在的 ta 變量, 并且繼續(xù)執(zhí)行后面的命令

這種情況通常并不是我們希望的結(jié)果,遇到不存在的變量,應(yīng)該直接報(bào)錯(cuò),并停止執(zhí)行后面的命令,在腳本開頭加上 set -u 語句或者執(zhí)行腳本的時(shí)候加上 -u ,可以得到我們期望的結(jié)果

在腳本開頭加上 set -u 語句,整個(gè)腳本內(nèi)容如下

  1. #!/bin/bash 
  2.  
  3. set -u 
  4. echo "start..." 
  5. echo $ta 
  6. echo "end..." 

執(zhí)行腳本,結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# ./td.sh  
  2. start... 
  3. ./td.sh: line 5: ta: unbound variable 

可以看到,加了 set -u 語句之后,遇到不存在的變量 ta, 直接報(bào)錯(cuò),并且停止執(zhí)行后面的命令

當(dāng)然,我們使用 bash -u td.sh 命令執(zhí)行腳本也會(huì)得到相同的結(jié)果

  • 語法錯(cuò)誤

語法錯(cuò)誤是shell腳本執(zhí)行錯(cuò)誤的原因之一,執(zhí)行腳本的時(shí)候加上 -n, 當(dāng)腳本有語法錯(cuò)誤,不會(huì)繼續(xù)執(zhí)行,而是打印錯(cuò)誤信息

現(xiàn)有腳本 te.sh, 內(nèi)容如下

  1. #!/bin/bash 
  2.  
  3. if [ $# -le 0 ];then 
  4.    echo "no param.." 

輸入 bash -n te.sh 命令,并回車,結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# bash -n te.sh  
  2. te.sh: line 5: syntax error: unexpected end of file 

上面的腳本中的 if 缺少結(jié)尾的 fi, 所以執(zhí)行 bash -n te.sh 命令之后會(huì)出現(xiàn)語法錯(cuò)誤的提示

這個(gè)選項(xiàng)很實(shí)用,特別是當(dāng)我們寫完shell腳本之后,不要急著執(zhí)行,先使用 -n 選項(xiàng)檢查下有沒有語法錯(cuò)誤,它可以幫我們提前發(fā)現(xiàn)錯(cuò)誤

  • 發(fā)生錯(cuò)誤,終止執(zhí)行

一般情況下,腳本執(zhí)行時(shí)發(fā)生錯(cuò)誤了,還是會(huì)繼續(xù)執(zhí)行后面的命令

現(xiàn)有腳本 tf.sh, 內(nèi)容如下

  1. #!/bin/bash 
  2.  
  3. echo "start..." 
  4. abc 
  5. echo "end..." 

執(zhí)行腳本,結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# ./tf.sh  
  2. start... 
  3. ./tf.sh: line 4: abc: command not found 
  4. end... 

從結(jié)果可以看到,腳本中第四行的 abc 是未知的命令,執(zhí)行時(shí)發(fā)生了錯(cuò)誤,但是腳本還是繼續(xù)向后執(zhí)行,一直到結(jié)束

這種行為不利于腳本的安全和錯(cuò)誤排查,在實(shí)際應(yīng)用中,發(fā)生了錯(cuò)誤應(yīng)該停止執(zhí)行腳本,防止錯(cuò)誤越積越多,我們可以使用 -e 選項(xiàng)來避免這個(gè)問題

加上 -e 選項(xiàng),再次執(zhí)行上述腳本,結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# bash -e ./tf.sh  
  2. start... 
  3. ./tf.sh: line 4: abc: command not found 

從上面結(jié)果可以知道,腳本執(zhí)行到第四行的時(shí)候發(fā)生了錯(cuò)誤,此時(shí)腳本停止往下執(zhí)行了

  • 管道子命令失敗,終止執(zhí)行

上面提到的 -e 選項(xiàng)有個(gè)特殊的情況,不適用于管道命令,管道命令是通過管道符 "|" 組合的命令, 具體的看下面的例子吧

現(xiàn)有腳本 tg.sh, 內(nèi)容如下

  1. #!/bin/bash 
  2.  
  3. echo "start..." 
  4. abc | echo "111" 
  5. echo "end..." 

腳本的第四行, abc | echo "111" 是管道命令,我們執(zhí)行 bash -e ./tg.sh 命令后,結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# bash -e ./tg.sh  
  2. start... 
  3. ./tg.sh: line 4: abc: command not found 
  4. 111 
  5. end... 

可以看到,即使使用 -e 選項(xiàng)執(zhí)行腳本,發(fā)生錯(cuò)誤的時(shí)候,還是會(huì)繼續(xù)往下執(zhí)行,直到結(jié)束

我們使用 set -o pipefail 來解決這種情況,只要管道命令中一個(gè)子命令發(fā)生了錯(cuò)誤,整個(gè)管道命令就失敗了,腳本就會(huì)終止執(zhí)行

修改下上述腳本,內(nèi)容如下

  1. #!/bin/bash 
  2.  
  3. set -o pipefail 
  4. echo "start..." 
  5. abc | echo "111" 
  6. echo "end..." 

再次執(zhí)行腳本,結(jié)果如下

  1. [root@VM-0-2-centos shell_debug]# bash -e tg.sh  
  2. start... 
  3. tg.sh: line 5: abc: command not found 
  4. 111 

可以看到,在 tg.sh 腳本開頭加上 set -o pipefail 語句之后,再次執(zhí)行腳本, 管道命令 abc | echo "111" 執(zhí)行子命令 abc 時(shí)發(fā)生錯(cuò)誤,后續(xù)的子命令不再執(zhí)行了,整個(gè)管道命令失敗了

 

由于執(zhí)行時(shí)加了 -e 選項(xiàng),當(dāng)管道命令執(zhí)行失敗了,腳本就會(huì)終止執(zhí)行,所以 echo "end..." 沒有執(zhí)行

 

責(zé)任編輯:武曉燕 來源: Linux開發(fā)那些事兒
相關(guān)推薦

2018-11-28 11:20:53

Python函數(shù)式編程編程語言

2019-07-18 16:32:06

Python函數(shù)數(shù)據(jù)

2018-02-01 14:15:00

Python函數(shù)

2022-03-08 08:39:22

gRPC協(xié)議云原生

2014-04-22 09:42:12

Bash腳本教程

2015-03-12 17:01:33

MySQLMySQL亂碼編碼轉(zhuǎn)換

2018-08-30 09:01:28

Web服務(wù)器Windows 10

2020-05-22 10:20:27

Shiro架構(gòu)字符串

2016-12-22 21:47:04

SEDLinuxUnix

2018-04-24 14:52:48

LinuxBash腳本

2009-11-05 14:53:54

Visual Stud

2013-09-13 14:08:01

2017-09-27 11:00:50

LinuxBash使用技巧

2009-10-21 18:19:36

VB.NET實(shí)現(xiàn)拖放

2009-11-12 16:25:35

Oracle嵌套循環(huán)

2024-07-10 18:55:09

Python定時(shí)

2021-04-23 09:50:41

topLinux命令

2014-08-08 09:30:04

android scrollview

2020-10-13 18:22:58

DevOps工具開發(fā)

2019-11-11 21:24:42

HadoopHbase分布式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

色综合视频在线| 久久国产在线视频| 男人天堂久久| 1024精品合集| 国产九区一区在线| 亚洲精品毛片一区二区三区| 91精品啪在线观看国产18| 精品捆绑美女sm三区 | 久久国产免费视频| 中文字幕在线视频久| 中文字幕中文乱码欧美一区二区 | 日韩一级片播放| gogo在线高清视频| 91一区一区三区| 国产精品久久久久久久美男| 欧美xxxx黑人xyx性爽| 禁断一区二区三区在线| 日韩精品在线一区| 一区二区三区 日韩| eeuss鲁一区二区三区| 国产精品日韩精品欧美在线| 国产一区精品在线| 国产suv精品一区二区69| 久热国产精品| 午夜精品一区二区三区av| 午夜激情视频在线播放| 日韩成人av在线资源| 欧美一级黄色录像| 国产喷水theporn| 美女搞黄视频在线观看| 亚洲精品美国一| 亚洲人成人77777线观看| 日韩中文字幕影院| 国产成人自拍网| 成人国产精品av| 久久久久久无码精品大片| 亚洲理伦在线| 欧美精品国产精品日韩精品| 欧美日韩色视频| 日韩毛片视频| 国产一区二区三区在线| 日韩av一二区| 欧美激情影院| 欧美精品一区二区久久久| 中文字幕avav| 精品国产第一国产综合精品| 欧美揉bbbbb揉bbbbb| 成年人免费大片| 高清不卡亚洲| 一本久久a久久精品亚洲 | 久久激情五月婷婷| 国产精品高潮视频| 黄色网址中文字幕| 丝袜美腿亚洲综合| 国产成人精品日本亚洲专区61| 国产福利拍拍拍| 一区二区三区国产盗摄 | 亚洲资源在线网| 国产黄色在线播放| 国产日韩欧美激情| 亚洲视频在线二区| 久久77777| 一区二区三区欧美日韩| 青青在线视频免费观看| 黄页网站在线| 欧美日韩国产精品一区| 91猫先生在线| 黄色精品视频| 91精品久久久久久久99蜜桃| 中文字幕乱码在线人视频| 99久久香蕉| 日韩国产精品亚洲а∨天堂免| 黄色短视频在线观看| 国产精品一区二区99| 国产亚洲一级高清| 91久久久久久久久久久久久久| 亚洲国产一区二区三区在线播放| 日本伦理一区二区三区| hd国产人妖ts另类视频| 欧美视频二区36p| 国产三级日本三级在线播放| 色999韩欧美国产综合俺来也| 欧美精品第1页| 日批视频免费看| 婷婷精品在线| 日韩专区在线观看| 久久婷婷一区二区| 亚洲欧美日韩在线观看a三区 | 久久网中文字幕| 国产精品综合色区在线观看| 国产精品久久二区| 99精品在线视频观看| 成人免费观看av| 欧美一区二区三区成人久久片| 秋霞午夜理伦电影在线观看| 亚洲动漫第一页| 91国产精品视频在线观看| 精品久久国产一区| 亚洲精品一区中文| 精品国产视频一区二区三区| 亚洲精选一区| 91精品久久久久久久久久久久久久| 国产成人精品一区二区无码呦| 99国产欧美另类久久久精品| 亚洲精品乱码视频| av福利导福航大全在线| 色88888久久久久久影院野外| 九一精品久久久| 亚洲精品小区久久久久久| 久久精品99久久久香蕉| 九九精品免费视频| 国产成人免费视频一区| 三区精品视频| 国产白浆在线免费观看| 7777精品伊人久久久大香线蕉| 国产精品无码一区二区三区免费 | 久久蜜臀精品av| 2021国产视频| 123成人网| 亚洲精品二三区| 久久免费看少妇高潮v片特黄| 亚洲男女自偷自拍| 成人3d动漫一区二区三区91| www.在线播放| 欧美性生交xxxxxdddd| 三级网站免费看| 久久理论电影| 国产成人精品电影久久久| 亚洲精品综合网| 综合久久综合久久| 一区二区三区免费播放| 久久av免费看| 国产91成人在在线播放| 蜜桃久久一区二区三区| 亚洲精品日韩专区silk| 日本不卡一区二区在线观看| 久久99高清| 日本最新高清不卡中文字幕| 天堂在线中文字幕| 激情亚洲一区二区三区四区| 在线免费看黄色片| 欧美日韩一区二区三区四区在线观看 | 日本午夜精品视频在线观看 | 婷婷婷国产在线视频| 亚洲福中文字幕伊人影院| 国产精品一级无码| 欧美日韩国产免费观看| www日韩av| 99爱在线观看| 日韩高清免费观看| 久久久久99精品成人片我成大片| 99re亚洲国产精品| 国产97在线 | 亚洲| 动漫3d精品一区二区三区乱码| 欧美日韩国产成人在线| 亚洲AV无码精品色毛片浪潮| 一区二区不卡在线播放| 国产精品果冻传媒| 国产精品hd| 国模精品一区二区三区| 国产不卡123| 亚洲欧美中文日韩在线v日本| 日本中文字幕久久| 国产精品免费视频网站| 999这里有精品| 欧美aⅴ99久久黑人专区| 3d精品h动漫啪啪一区二区| 日本无删减在线| 精品视频在线播放色网色视频| 日韩综合在线观看| 日本一二三不卡| 天天综合天天添夜夜添狠狠添| 欧美女激情福利| 精品视频一区在线| 亚洲www啪成人一区二区| 色老头一区二区三区| 国产成人精品亚洲精品色欲| 欧美日韩国产一区二区| 国产性猛交xx乱| 国产成人精品1024| 欧美日韩激情视频在线观看 | 国产专区在线视频| 91亚洲无吗| 国产成人a亚洲精品| 免费在线看a| 亚洲福利视频二区| 欧美一级黄视频| 亚洲精品日产精品乱码不卡| 免费无码一区二区三区| 麻豆成人免费电影| 欧美人成在线观看| 成人在线电影在线观看视频| av一区二区三区免费| 91av亚洲| 美女久久久久久久久久久| 欧美成人免费| 日韩视频一区在线观看| 久久久精品视频网站| 亚洲激情校园春色| 亚洲一区二区观看| 国产精品一品视频| 网站一区二区三区| 夜久久久久久| 青青草综合在线| 日韩欧美三级| 久久riav二区三区| 亚洲综合网站| 91精品综合久久久久久五月天| 热色播在线视频| 欧美日本中文字幕| 91大神在线网站| 亚洲欧美国产日韩中文字幕| 午夜精品久久久久久久99老熟妇| 91九色02白丝porn| www.中文字幕在线观看| 一区二区三区在线视频播放| youjizz亚洲女人| www国产亚洲精品久久麻豆| 国产亚洲色婷婷久久| 青青国产91久久久久久| 国产精品沙发午睡系列| 欧美午夜精品| 日本道在线视频| 久久中文字幕二区| 日本一区视频在线观看免费| av男人一区| 91在线在线观看| 国产日本亚洲| 成人网在线观看| 国产精品亲子伦av一区二区三区| 青青久久aⅴ北条麻妃| 17videosex性欧美| 久久久久久成人| 欧美bbbxxxxx| 久久久久久美女| √天堂8资源中文在线| 欧美国产视频一区二区| 在线观看操人| 欧美精品免费看| 性欧美videoshd高清| 欧美成人亚洲成人| 日本乱理伦在线| 欧美激情aaaa| av电影院在线看| 5252色成人免费视频| 蜜桃视频m3u8在线观看| 欧美一级视频免费在线观看| 这里有精品可以观看| 欧美一级片免费在线| 人人鲁人人莫人人爱精品| 国产精品第100页| 欧美日韩女优| 国产精品自拍偷拍| 国产 日韩 欧美| 99九九视频| 久久男人av| 美女一区视频| 成人嫩草影院| 四虎影院一区二区| 午夜精品av| 奇米影视亚洲色图| 亚洲女同同性videoxma| 亚洲免费av一区二区三区| 爽好多水快深点欧美视频| 精品少妇无遮挡毛片| 美日韩一区二区| 免费观看黄网站| 99视频一区二区| 51妺嘿嘿午夜福利| 亚洲少妇30p| 国产一卡二卡在线| 一本高清dvd不卡在线观看| 在线观看av大片| 精品三级在线看| 视频二区在线| 综合欧美国产视频二区| 亚洲无线看天堂av| 欧美中文字幕在线播放| 国产美女久久| 国产高清自拍一区| 极品美女一区二区三区| 粉嫩av一区二区三区天美传媒| 在线日本成人| 久久99999| 成人爽a毛片一区二区免费| 精品夜夜澡人妻无码av| 亚洲欧洲日韩av| 男女视频免费看| 欧美日韩国产美女| 天堂成人在线观看| 久久精品福利视频| 国产自产自拍视频在线观看| 国产精品自产拍在线观看中文| 国产一级成人av| 亚洲欧洲日夜超级视频| 亚洲神马久久| 肉色超薄丝袜脚交| 久久亚洲精品小早川怜子| 乱h高h女3p含苞待放| 日本黄色一区二区| 亚洲卡一卡二卡三| 久久精品视频亚洲| 日韩欧美一区二区三区在线观看| 98国产高清一区| 成人vr资源| jizzjizzxxxx| 成人午夜激情视频| 国产又粗又硬又长又爽| 日本高清免费不卡视频| 黄色www视频| 超薄丝袜一区二区| 99只有精品| 鲁丝一区鲁丝二区鲁丝三区| 欧美午夜不卡| 国内av免费观看| 欧美国产日韩一二三区| 久久午夜免费视频| 欧美电影免费观看完整版| 亚乱亚乱亚洲乱妇| 日韩男女性生活视频| 东京久久高清| 日韩成人三级视频| 国产乱一区二区| 一级免费黄色录像| 欧美综合视频在线观看| 日本福利午夜视频在线| 久久免费视频在线观看| 日本高清久久| www.午夜色| 久久精品国产免费看久久精品| 蜜臀久久99精品久久久久久| 欧美午夜精品久久久久久久| 欧美少妇bbw| 欧美激情精品久久久久久大尺度 | 精品视频一区二区三区四区| 亚洲网站视频| 国产精品一区二区在线免费观看| 亚洲精品一二三四区| 国产男女无套免费网站| 久久久成人精品视频| 偷拍自拍亚洲| 中文字幕剧情在线观看一区| 久久成人免费网站| 亚洲综合久久av一区二区三区| 欧美日韩精品三区| 免费黄网站在线播放| 国产欧美一区二区三区视频| 国产精品99视频| 尤物网站在线看| 一区二区三区日韩在线观看| 囯产精品一品二区三区| 国精产品一区一区三区有限在线| 大型av综合网站| 国模无码视频一区二区三区| av一二三不卡影片| 日韩久久中文字幕| 一区二区欧美日韩视频| 激情久久一区二区| 美女黄色片网站| 成人综合在线视频| 日韩高清精品免费观看| 国产丝袜一区视频在线观看| 亚洲www免费| 亚洲一区尤物| 国产成人精品1024| 国产福利拍拍拍| 中文字幕一区二区三区电影| 精品国产亚洲一区二区三区在线 | 特一级黄色大片| 亚洲老头同性xxxxx| 国产一区一一区高清不卡| 伊人狠狠色丁香综合尤物| 国产精品1区2区3区| 黄色片视频网站| 在线播放精品一区二区三区| 91麻豆精品一二三区在线| 800av在线免费观看| 成人激情小说乱人伦| 男人天堂视频在线| 久久精品亚洲94久久精品| 国产欧美一区二区三区米奇| 黄色一级大片在线观看| 亚洲人成精品久久久久久| 天天操天天干天天爽| 国产精品国产三级国产aⅴ9色| 久久久久久久久久久妇女| 亚洲精品乱码久久| 精品视频在线看| а√在线中文在线新版| 亚洲国产成人不卡| 成人中文字幕合集| 91视频在线视频| 久久久久久69| 99久久夜色精品国产亚洲1000部| 日本不卡视频一区| 欧美日韩精品一区二区| 97人人爽人人澡人人精品| 最新不卡av| 久久久高清一区二区三区| 国产又色又爽又黄又免费|