日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell编程入门基础上

發布時間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell编程入门基础上 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

為什么學 Shell

Shell 腳本語言是實現 Linux/UNIX 系統管理及自動化運維所必備的重要工具, Linux/UNIX 系統的底層及基礎應用軟件的核心大都涉及 Shell 腳本的內容。每一個合格 的Linux 系統管理員或運維工程師,都需要能夠熟練地編寫 Shell 腳本語言,并能夠閱讀系統及各類軟件附帶的 Shell 腳本內容。只有這樣才能提升運維人員的工作效率,適 應曰益復雜的工作環境,減少不必要的重復工作,從而為個人的職場發展奠定較好的基礎

什么是 shell

Shell 是一個命令解釋器,它在操作系統的最外層,負責直接與用戶對話,把用戶的輸入解釋給操作系統,并處理各種各樣的操作系統的輸出結果,輸出屏幕返回給用戶。

這種對話方式可以是:

  • 交互的方式:從鍵盤輸入命令,通過 /bin/bash 的解析,可以立即得到 Shell 的回應
[root@mico ~]# echo "hello" hello [root@mico ~]# pwd /root [root@mico ~]#
  • 非交互的方式: 腳本

什么是Shell腳本

  • Linux命令、變量和流程控制語句等有機的結合起來并以程序文件形式執行,該程序稱為shell腳本。
  • Shell腳本語言是弱類型語言(無須定義變量的類型即可使用), shell腳本擅長處理純文本類型的數據,而linux中,幾乎所有的配置文件,日志,都是純文本類型文件。

腳本語言的種類

編譯型語言

定義:指用專用的編譯器,針對特定的操作平臺(操作系統)將某種高級語言源代碼一次性翻譯成可被硬件平臺直接運行的二進制機器碼(具有操作數,指令、及相應的格式),這個過程叫做編譯(./configure make makeinstall );編譯好的可執行性文件(.exe),可在相對應的平臺上運行(移植性差,但運行效率高)。典型的編譯型語言有, C語言、C++等。另外,Java語言是一門很特殊的語言,Java程序需要進行編譯步驟,但并不會生成特定平臺的二進制機器碼,它編譯后生成的是一種與平臺無關的字節碼文件(*.class)(移植性好的原因),這種字節碼自然不能被平臺直接執行,運行時需要由解釋器解釋成相應平臺的二進制機器碼文件;大多數人認為Java是一種編譯型語言,但我們說Java即是編譯型語言,也是解釋型語言也并沒有錯。

解釋型語言

定義:指用專門解釋器對源程序逐行解釋成特定平臺的機器碼并立即執行的語言;相當于把編譯型語言的編譯鏈接過程混到一起同時完成的。解釋型語言執行效率較低,且不能脫離解釋器運行,但它的跨平臺型比較容易,只需提供特定解釋器即可。常見的解釋型語言有, Python(同時是腳本語言)與Ruby等。

腳本語言

定義:為了縮短傳統的編寫-編譯-鏈接-運行(edit-compile-link-run)過程而創建的計算機編程語言。特點:程序代碼即是最終的執行文件,只是這個過程需要解釋器的參與,所以說腳本語言與解釋型語言有很大的聯系。腳本語言通常是被解釋執行的,而且程序是文本文件。

典型的腳本語言有,JavaScript,Python,shell等。

其他常用的腳本語句種類

  • PHP是網頁程序,也是腳本語言。是一款更專注于 web 頁面開發(前端展示)的腳本語言,例如:Dedecms,discuz。PHP 程序也可以處理系統日志,配置文件等,php 也可以調用系統命令。
  • Perl 腳本語言。比 shell 腳本強大很多,語法靈活、復雜,實現方式很多,不易讀,團隊協作困難,但仍不失為很好的腳本語言,存世大量的程序軟件。MHA 高可用 Perl 寫的
  • Python,不但可以做腳本程序開發,也可以實現 web 程序以及軟件的開發。近兩年越來越多的公司都會要求會 Python。

Shell腳本與 php/perl/python 語言的區別和優勢?

shell 腳本的優勢在于處理操作系統底層的業務 (linux 系統內部的應用都是 shell 腳本完成)因為有大量的 linux 系統命令為它做支撐。2000 多個命令都是 shell 腳本編程的有力支撐,特別是grep、awk、sed 等。例如:一鍵軟件安裝、優化、監控報警腳本,常規的業務應用,shell 開發更簡單快速,符合運維的簡單、易用、高效原則。PHP、Python 優勢在于開發運維工具以及 web 界面的管理工具,web 業務的開發等。處理一鍵軟件安裝、優化,報警腳本。常規業務的應用等 php/python 也是能夠做到的。但是開發效率和復雜比用 shell 就差很多了。

系統中的shell

查看系統環境

[root@mico ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@mico ~]# uname -r 3.10.0-862.11.6.el7.x86_64 [root@mico ~]# getenforce Disabled [root@mico ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1) [root@mico ~]#

查看系統中的命解釋器

[root@mico ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh [root@mico ~]#

常用操作系統的默認shell

  • Linux是Bourne Again shell(bash)
  • Solaris和FreeBSD缺省的是Bourne shell(sh)
  • AIX下是Korn Shell(ksh)
  • HP-UX缺省的是POSIX shell(sh)
[root@mico ~]# echo $SHELL /bin/bash

查看系統的 Bash 版本

[root@VM_42_34_centos /]# head -1 /etc/init.d/network #! /bin/bash [root@VM_42_34_centos /]# head -1 /etc/init.d/netconsole #!/bin/bash

bash版本

[root@mico ~]# bash -version GNU bash, 版本 4.2.46(2)-release (x86_64-redhat-linux-gnu) Copyright (C) 2011 Free Software Foundation, Inc. 許可證 GPLv3+: GNU GPL 許可證版本3或者更高 <http://gnu.org/licenses/gpl.html>這是自由軟件,您可以自由地更改和重新發布。 在法律允許的范圍內沒有擔保.

bash 破殼漏洞

使用 命令 env x='() { :;}; echo be careful' bash -c "echo this is a test"
如果返回結果為一行,則為正常,

[root@mico ~]# env x='() { :;}; echo be careful' bash -c "echo this is a test" this is a test #解決辦法 升級當前的bash版本yum install update bash

bash 和 sh 的區別

早期的bash和sh稍有不同,還包含了csh和ksh的特色,但大多數腳本都可以不加修改地在sh上運行

[root@VM_42_34_centos ~]# ll /bin/bash -rwxr-xr-x 1 root root 964544 4月 11 2018 /bin/bash [root@VM_42_34_centos ~]# ll /bin/sh lrwxrwxrwx 1 root root 4 8月 10 2018 /bin/sh -> bash

說明:sh為bash的軟鏈接,一般情況下,腳本開頭使用“#!/bin/bash”和"#!/bin/sh"是沒有區別的,但更規范的寫法是在腳本開頭使用“#!/bin/bash”
下面的Shell腳本是系統自帶的軟件啟動腳本的開頭部分

sh與bash 的關系

[root@mico ~]# ll /bin/sh lrwxrwxrwx 1 root root 4 8月 10 2018 /bin/sh -> bash

/bin與 /user/bin 的關系

[root@mico ~]# ll /bin -d lrwxrwxrwx 1 root root 7 8月 10 2018 /bin -> usr/bin

腳本書寫規范

腳本統一存放目錄

[root@mico ~]# mkdir -p /server/scripts/ [root@mico ~]# cd /server/scripts/

選擇解釋器

腳本第一行指出由哪個程序(解釋器)來執行腳本中的內容
#!/bin/bash或#!/bin/sh(255個字符以內)

注意格式 ↓
其中開頭的"#!"字符又稱為幻數,在執行bash腳本的時候,內核會根據"#!"后的解釋器來確定該用那個程序解釋這個腳本中的內容。

[root@mico scripts]# head -1 /etc/init.d/* ==> /etc/init.d/functions <== # -*-Shell-script-*-==> /etc/init.d/netconsole <== #!/bin/bash==> /etc/init.d/network <== #! /bin/bash==> /etc/init.d/README <== You are looking for the traditional init scripts in /etc/rc.d/init.d,

編輯腳本使用vim

使用 .vimrc 文件,將下面的信息添加到 .vimrc 文件中,能夠快速的生成開頭的注釋信息

autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"func SetTitle()if expand("%:e") == 'sh'call setline(1,"#!/bin/bash")call setline(2, "##############################################################")call setline(3, "# File Name: ".expand("%"))call setline(4, "# Version: V1.0")call setline(5, "# Author: mico")call setline(6, "# Created Time : ".strftime("%F %T"))call setline(7, "# Description:")call setline(8, "##############################################################")call setline(9, "")endif endfunc

使用后的效果

#!/bin/bash ############################################################## # File Name: scripts_tmp.sh # Version: V1.0 # Author: mico # Created Time : 2019-07-09 10:12:27 # Description: ##############################################################

在Shell腳本中,跟在#后面的內容表示注釋。注釋部分不會被執行,僅給人看。注釋可以自成一行,也可以跟在命令后面,與命令同行。要養成寫注釋的習慣,方便自己與他人。
最好不用中文注釋,因為在不同字符集的系統會出現亂碼。(字符集為zh_CN.UTF-8,為中文)。

文件名規范

名字要有意義,并且結尾以 .sh 結束(并不是必須)

開發的規范和習慣小結

  • 放在統一的目錄
  • 腳本以 .sh 為擴展名
  • 開頭指定腳本解釋器。
  • 開頭加版本版權等信息,可配置 ~/.vimrc 文件自動添加。
  • 腳本不要用中文注釋,盡量用英文注釋。
  • 代碼書寫優秀習慣
    • 成對的內容一次性寫出來,防止遺漏,如[ ]、' '、" "等
    • [ ] 兩端要有空格,先輸入[ ],退格,輸入 2 個空格,再退格寫。
    • 流程控制語句一次書寫完,再添加內容。(if 條件 ; then 內容;fi)
    • 通過縮進讓代碼易讀。
    • 腳本中的引號都是英文狀態下的引號,其他字符也是英文狀態。

shell腳本的執行

當 Shell 腳本運行時,會先查找系統環境變量 ENV,該變量指定了環境文件(加載順序通常是 /etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc ),在加載了上述變量文件后,Shell就開始執行腳本中的內容。

Shell 腳本是從上至下、從左至右依次執行每一行的命令及語句的。即執行完了一個命令后再執行下一個,如果在 Shell 腳本中(即腳本嵌套)
時,就會先執行子腳本的內容,完成后再返回父腳本繼續執行父腳本內后序的命令及語句。
通常情況下,在執行 Shell 腳本時,會向系統內核請求啟動一個新進程,以便在該進程或只能怪執行腳本的命令以及子Shell 腳本。

執行腳本的辦法

執行腳本的四種方法

(1)sh/bash scripts.sh
當腳本本身沒有可執行權限時使用的方法,或腳本文件開頭沒有指定解釋器時需要使用分方法。
(2)首先chown +x ,然后./scripts.sh或.path/scripts.sh
在當前路徑下執行腳本(腳本需要有執行權限),通過絕對路徑或相對路徑直接執行腳本
(3)source scripts.sh 或 . (空格) scripts.sh
這種方法通常是使用 source 或 . 讀入或加載指定的 shell 腳本文件(不需要執行權限),然后依次執行指定 shell 腳本中的所有語句。這些語句將在當前 shell 腳本的進程中運行(其他幾種模式都會啟動新的進程執行子腳本)。source 或 . 命令的功能是在當前 Shell 中執行 source 或 . 加載并執行的相關腳本文件中的命令及語句,而不是產生一個子 Shell 來執行文件中的命令。
說明:. 或 source 命令的功能相同,都是讀入腳本并執行腳本中的命令。
(4)sh < script-name 或 cat scripts-name|sh 效率低
同樣適用于bash,不過這種用法不常見。

source 與 . (點) 的作用

soucre命令

[root@mico ~]# help source |head -2 source: source 文件名 [參數]在當前 shell 中執行一個文件中的命令。 . (點) [root@mico ~]# help . |head -2 .: . 文件名 [參數]在當前 shell 中執行一個文件中的命令。

sh于source的區別

對比:用 source 執行腳本文件,執行過程不另開進程,腳本文件中設定的變量在當前shell中可以看到;
用 sh/bash 執行腳本文件,是在當前進程另開子進程來執行腳本命令,腳本文件中設定的變量在當前shell中不能看到。

例如

[root@VM_42_34_centos trsky]# echo 'userdir=`pwd`' >> testsource.sh [root@VM_42_34_centos trsky]# cat testsource.sh userdir=`pwd` [root@VM_42_34_centos trsky]# sh testsource.sh [root@VM_42_34_centos trsky]# echo $userdir[root@VM_42_34_centos trsky]# source testsource.sh [root@VM_42_34_centos trsky]# echo $userdir /home/trsky [root@VM_42_34_centos trsky]#

由案例可知,使用 source 或 . 執行的腳本中的變量值會傳遞到當前的 Shell 下,因為使用 source 或 . 執行腳本不會開啟新的進程,而是在統一進程下完成腳本中所有指令的執行。

[root@mico scripts]# sh mico_test.sh Hello World! [root@mico ~]# echo $Mico Mico # sh 新建一個Shell窗口(新建一個進程)執行一個文件中的命令。[root@mico scripts]# source mico_test.sh Hello World! [root@mico scripts]# echo $mico Hello World!

面試題:

問 sh test.sh 后 echo $user 返回的結果_空 ?

[root@oldboy scripts]# cat test.sh #!/bin/bash user=`whoami`

Shell的變量

Shell變量的特性

Shell為弱類型語言,所以在默認情況下,在Bash Shell中是不會區分變量類型的。但Shell可以通 declare 顯示定義變量的類型。

什么是變量

變量可以分為兩類:環境變量(全局變量)和普通變量(局部變量)

  • 環境變量也可稱為全局變量,可以在創建他們的Shell及其派生出來的任意子進程shell中使用,環境變量又可分為自定義環境變量和Bash內置的環境變量
  • 普通變量也可稱為局部變量,只能在創建他們的Shell函數或Shell腳本中使用。普通變量一般是由開發者用戶開發腳本程序時創建的。
  • 特殊變量

Shell中定義變量名以及為變量內容賦值要求
變量名一般由字母、數字、下劃線組成,可以由字母或下劃線開頭

把一個命令的結果作為變量的內容賦值的方法

  • 變量名=ls
  • 變量名=$(ls)

環境變量

使用 env/declare/set/export -p 命令查看系統中的環境變量,這三個命令的的輸出方式稍有不同。

[root@mico scripts]# env XDG_SESSION_ID=1 HOSTNAME=mico TERM=linux SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=10.0.0.1 5537 22 SSH_TTY=/dev/pts/0 USER=root ~~~

輸出一個系統中的環境變量

[root@mico ~]# echo $LANG zh_CN.UTF-8

自定義環境變量

設置環境變量
export 和 declare

設置環境變量的3種方法

  • export 變量名=value
  • 變量名=value; export 變量名
  • declare -x 變量名=value

自定義全局變量的實例:

[root@VM_42_34_centos ~]# cat /etc/profile|grep Mico export Mico='mico' [root@VM_42_34_centos ~]# source /etc/profile [root@VM_42_34_centos ~]# echo $MIco[root@VM_42_34_centos ~]# echo $Mico mico [root@VM_42_34_centos ~]# env|grep Mico Mico=mico [root@VM_42_34_centos ~]#

讓環境變量永久生效的常用設置文件

  • 用戶環境變量配置
# 用戶的環境變量設置,比較常見的是用戶家目錄下的.bashrc 和 .bash_profile [root@mico ~]# ls /root/.bashrc /root/.bashrc [root@mico ~]# ls /root/.bash_profile /root/.bash_profile [root@mico ~]#
  • 全局環境變量的配置
    常見的全局環境變量的配置文件如下:
/etc/profile /etc/bashrc /etc/profile.d/

如果要在登陸后初始化或顯示加載內容,則將腳本文件放在/etc/profile.d/下即可(無需執行權限)

設置登錄提示的兩種方式

  • 在/etc/motd里增加提示的字符串
[root@mico ~]# vim /etc/motd [root@mico ~]# cat /etc/motd Welcome to Linux.
  • 在/etc/profile.d/目錄下添加腳本
[root@mico profile.d]# cat /etc/profile.d/mico.sh #!/bin/bash ############################################################## # File Name: /etc/profile.d/mico.sh # Version: V1.0 # Author: mico # Created Time : 2019-07-01 10:00:06 # Description: ############################################################## echo "Hello, you are studing Linux"

登錄后出現

Connection established. To escape to local shell, press 'Ctrl+Alt+]'.Welcome to Linux. Hello, you are studing Linux [root@mico ~]#

顯示與取消環境變量

  • 通過 echo 或 prinf 打印環境變量
#常見的系統環境變量 $HOME:用戶登錄時進入的目錄 $UID:當前用戶的UID(用戶標識),相當于 id-u $PWD:當前工作目錄的絕對路徑名 $SHELL:當前Shell $USER:當前yonghu ... 打印或刪除環境變量 #打印環境 printf "$Home\n" echo $PWD
  • 使用unset取消環境變量
#刪除環境變量 unset PWD

普通變量

本地變量在用戶當前的Shell生存期的腳本中使用。例如,本地變量OLDBOY取值為bingbing,這個值在用戶當前Shell生存期中有意義。如果在Shell中啟動另一個進程或退出,本地變量值將無效

普通變量的定義

變量名=value //解釋變量名 變量名='value' //不解釋變量名 變量名="value" //解釋變量名

定義普通變量實踐

[root@mico ~]# a=1 [root@mico ~]# b='2' [root@mico ~]# c="3" [root@mico ~]# echo "$a" 1 [root@mico ~]# echo "$b" 2 [root@mico ~]# echo "${c}"

提示:$變量名表示輸出變量,可以用$c和${c}兩種用法
【小結】連續普通字符串內容賦值給變量,不管用什么引號或者不用引號,它的內容是什么,打印變量就輸出什么

export命令

[root@mico ~]# help export export: export [-fn] [名稱[=值] ...] 或 export -p 為 shell 變量設定導出屬性。

標記每個 NAME 名稱為自動導出到后續命令執行的環境。如果提供了 VALUE
則導出前將 VALUE 作為賦值。

export命令的說明

  • 當前shell窗口及子shell窗口生效
  • 在新開的shell窗口不會生效,生效需要寫入配置文件

定義變量

[root@mico scripts]# CSLN=mico [root@mico scripts]# export CSLN1=1 # 當前窗口查看 [root@mico scripts]# echo $CSLN mico [root@mico scripts]# echo $CSLN1 1 # 編寫測試腳本 [root@mico scripts]# vim quanju.sh #!/bin/bash echo $CSLN echo $CSLN1 # 使用sh執行 [root@mico scripts]# sh quanju.sh 1 # 使用source 執行 [root@mico scripts]# source quanju.sh mico 1

環境變量相關配置文件

  • /etc/proflie
  • /etc/bashrc
  • ~/.bashrc
  • ~/.bash_profile
  • /etc/proflie.d/ # 目錄

四文件讀取順序(CentOS6和7都一樣)

① /etc/profile
② ~/.bash_profile
③ ~/.bashrc
④ /etc/bashrc

系統運行Shell的三種方式

1) 通過系統用戶登陸后默認運行的shell
2) 非登錄交互式運行Shell
3) 執行腳本運行非交互式Shell

文件讀取過程示意圖

驗證四文件讀取順序的方法

sed -i '1a echo "$(date +%T-%s) /etc/profile1" >>/tmp/mico' /etc/profile sed -i '$a echo "$(date +%T-%s) /etc/profile2" >>/tmp/mico' /etc/profile sed -i '1a echo "$(date +%T-%s) /etc/bashrc1" >>/tmp/mico' /etc/bashrc sed -i '$a echo "$(date +%T-%s) /etc/bashrc2" >>/tmp/mico' /etc/bashrc sed -i '1a echo "$(date +%T-%s) ~/.bashrc1" >>/tmp/mico' ~/.bashrc sed -i '$a echo "$(date +%T-%s) ~/.bashrc2" >>/tmp/mico' ~/.bashrc sed -i '1a echo "$(date +%T-%s) ~/.bash_profile1" >>/tmp/mico' ~/.bash_profile sed -i '$a echo "$(date +%T-%s) ~/.bash_profile2" >>/tmp/mico' ~/.bash_profile

環境變量的知識小結

  • 變量名通常要大寫。
  • 變量可以在自身的Shell及子Shell中使用。
  • 常用export來定義環境變量。
  • 執行env默認可以顯示所有的環境變量名稱及對應的值。
  • 輸出時用“$變量名”,取消時用“unset變量名”。
  • 書寫crond定時任務時要注意,腳本要用到的環境變量最好先在所執行的Shell腳本中重新定義。
  • 如果希望環境變量永久生效,則可以將其放在用戶環境變量文件或全局環境變量文件里。

環境變量

環境變量一般是指用export內置命令導出的變量,用戶定義shell的運行環境。保證shell命令的正確執行。Shell通過環境變量來確定登錄用戶名、命令路徑、終端類型、登錄目錄等。如果需要永久保存環境變量,可在用戶家目錄下的.bash_profile或.bashrc(非用戶登錄模式特有,例如遠程登錄SSH)文件中,或者全局配置/etc/bashrc(非用戶登錄模式特有,如遠程SSH)或/etc/profile文件中定義。在將環境變量放入上述的文件之后,每次用戶登錄時這些變量將被初始化。

查看設置的變量:set、env、declare

  • set:輸出所有的變量,包括全局變量和局部變量。set -o 顯示bash Shell的所有參數配置信息
  • env:只顯示全局變量
  • declare:輸出所有的變量、函數、整數和已經導出的變量

變量中引號的使用

  • 只有在變量的值中有空格的時候,會使用引號。
  • 單引號與雙引號的區別在于,是否能夠解析特殊符號。
[root@mico ~]# name=vicodona [root@mico ~]# name2='mico' [root@mico ~]# name3="you are my heart" [root@mico ~]# echo $name vicodona [root@mico ~]# echo $name2 mico [root@mico ~]# echo $name3 you are my heart [root@mico ~]# name4='mi co' [root@mico ~]# echo $name4 mi co [root@mico ~]# name5="mi co" [root@mico ~]# echo $name5 mi co [root@mico ~]# name6="mico $PWD" [root@mico ~]# echo $name6 mico /root [root@mico ~]# name6='mi co $PWD' [root@mico ~]# echo $name6 mi co $PWD [root@mico ~]# name7="mico $PWD" [root@mico ~]# echo $name7 mico /root

普通變量的要求

  • 內容是純數字、簡單的連續字符(內容中不帶任何空格)時,定義時可以不加任何引號,例如:
a.MicoAge=22 b.NETWORKING=yes
  • 沒有特殊情況時,字符串一律用雙引號定義賦值,特別是多個字符串中間有空格時,例如:
a.NFSD_MODULE="no load" b.MyName="Oldboy is a handsome boy."
  • 當變量里的內容需要原樣輸出時,要用單引號(M),這樣的需求極少,例如:
a.OLDBOY_NAME='OLDBOY'

變量使用反引號賦值

[root@mico scripts]# time=`date` [root@mico scripts]# echo $time 2017年 12月 05日 星期二 09:02:06 CST[root@mico scripts]# file=`ls` [root@mico scripts]# echo $file mico_test.sh panduan.sh quanju.sh yhk.sh

使用${}

打印變量的時候防止出現“金庸新著”的問題

[root@mico ~]# time=`date` [root@mico ~]# echo $time 2019年 07月 18日 星期四 17:47:23 CST [root@mico ~]# echo ${time}_day 2019年 07月 18日 星期四 17:47:23 CST_day [root@mico ~]# echo $time-day 2019年 07月 18日 星期四 17:47:23 CST-day

編寫腳本測試${}

# 使用腳本測試[root@mico ~]# vim variable.sh #!/bin/bashtime=`date`echo $timedayecho ${time}day[root@mico ~]# sh variable.sh 2019年 07月 18日 星期四 17:49:51 CSTday 名稱解釋
單引號所見即所得,即輸出時會將單引號內的所有內容都原樣輸出,或者描述為單引號里面看到的是什么就會輸出什么;這稱為強引用
雙引號(默認)輸出雙引號內的所有內容;如果內容中有命令、變量、特殊字符等,會先把變量、命令、轉義字符解析出結果,然后再輸出最終內容,推薦使用,稱為弱引用
無引號賦值時,如果變量內容中有空格,則會造成賦值不完整。而在輸出內容時,會將含有空格的字符串視為一個整體來輸出;如果內容中有命令、變量等,則會先把變量、命令解析出結果,然后輸出最終內容;如果字符串中帶有空格等特殊字符,則有可能無法完整的輸出,因此需要改加雙引號
反引號一般用于引用命令,執行的時候命令會被執行,相當于`$()`,賦值和輸出都要用命令引起來

定義變量名技巧

  • 變量名只能為字母、數字或下劃線,只能以字母或下劃線開頭。
  • 變量名的定義要有一定的規范,并且要見名知意。

示例:

MicoAge=22 #<==每個單詞的首字母大寫的寫法 mico_age=22 #<==單詞之間用"_"的寫法 micoAgeSex=man #<==駝峰語法:首個單詞的首字母小寫,其余單詞首字母大寫 MICOAGE=22 #<==單詞全大寫的寫法
  • 一般的變量定義、賦值常用雙引號;簡單連續的字符串可以不加引號;希望原樣輸出時使用單引號。
  • 希望變量的內容是命令的解析結果時,要用反引號'',或者用$()把命令括起來再賦值。

特殊變量

位置變量

常用的特殊位置參數說明

位置變量作用說明
$0獲取當前執行的shell腳本的文件名,如果執行腳本帶路徑那么就包括腳本路徑。
$n獲取當前執行的shell腳本的第n個參數值,n=1..9,當n為0時表示腳本的文件名,如果n大于9用大括號括起來{10},參數以空格隔開。
$#獲取當前執行的shell腳本后面接的參數的總個數
$*獲取當前shell的所有傳參的參數,不加引號同$@;如果給$加上雙引號,例如: “$”,則表示將所有的參數視為單個字符串,相當于“112$3”。
$@獲取當前shell的所有傳參的參數,不加引號同$*;如果給$@加上雙引號,例如: “$@”,則表示將所有參數視為不同的獨立字符串,相當于“$1” “$2” “$3” “……”,這是將參數傳遞給其他程序的最佳方式,因為他會保留所有內嵌在每個參數里的任何空白。

當$*和$@ 都加雙引號時,兩者有區別,都不加雙引號時,兩者無區別。

舉例說:
腳本名稱叫 test.sh 入參三個: 1 2 3
運行 test.sh 1 2 3后
$* 為 "1 2 3"(一起被引號包住)
$@ 為 "1" "2" "3"(分別被包住)

參數實踐
[root@mico ~]# vim parameter.sh #!/bin/bashecho $0 echo "第一個參數:" $1 echo "第二個參數:" $2 echo "第11個參數:" ${11}[root@mico ~]# sh parameter.sh parameter.sh 第一個參數: 第二個參數: 第11個參數: [root@mico ~]# [root@mico ~]# sh parameter.sh 1 2 3 4 5 6 7 8 9 10 11 parameter.sh 第一個參數: 1 第二個參數: 2 第11個參數: 11 [root@mico ~]#
$# 參數實踐
[root@mico ~]# cat parameter.sh #!/bin/bash ############################################################## # File Name: parameter.sh # Version: V1.0 # Author: mico # Created Time : 2019-07-18 17:50:45 # Description: ############################################################## echo $0 echo "第一個參數:" $1 echo "第二個參數:" $2 echo "第10個參數:" ${10} echo "第11個參數:" ${11} echo "參數個數:" $#[root@mico ~]# sh parameter.sh 1 2 3 4 5 6 7 8 9 10 11 parameter.sh 第一個參數: 1 第二個參數: 2 第10個參數: 10 第11個參數: 11 參數個數: 11
$* 參數實踐
[root@mico ~]# vim parameter.sh#!/bin/bash ############################################################## # File Name: parameter.sh # Version: V1.0 # Author: mico # Created Time : 2019-07-18 17:50:45 # Description: ############################################################## echo $0 echo "第一個參數:" $1 echo "第二個參數:" $2 echo "第10個參數:" ${10} echo "第11個參數:" ${11} echo "參數個數:" $# echo "參數:"$* [root@mico ~]# sh parameter.sh 1 2 3 4 5 6 7 8 9 10 11 parameter.sh 第一個參數: 1 第二個參數: 2 第10個參數: 10 第11個參數: 11 參數個數: 11 參數:1 2 3 4 5 6 7 8 9 10 11
$* 與$@ 對比實踐
[root@mico scripts]# set -- "I am" handsome boy.. [root@mico scripts]# echo $1 I am [root@mico scripts]# echo $2 handsome [root@mico scripts]# echo $3 boy.. [root@mico scripts]# echo $* I am handsome boy.. [root@mico scripts]# echo $@ I am handsome boy..[root@mico scripts]# for i in $*;do echo $i ;done I am handsome boy.. [root@mico scripts]# for i in $@;do echo $i ;done I am handsome boy.. [root@mico scripts]# for i in "$@";do echo $i ;done I am handsome boy.. [root@mico scripts]# for i in "$*";do echo $i ;done I am handsome boy..

進程狀態變量

Shell進程的特殊狀態變量說明

位置變量作用說明
$?獲取執行上一個指令的執行狀態返回值(0為成功,非零為失敗),這個變量最常用
$$獲取當前執行的Shell腳本的進程號(PID),這個變量不常用,了解即可
$!獲取上一個在后臺工作的進程的進程號(PID),這個變量不常用,了解即可
$_獲取在此之前執行的命令或腳本的最后一個參數,這個變量不常用,了解即可

進程參數實踐

[root@mico scripts]# echo $? 0 [root@mico scripts]# echo $$ 1368 [root@mico scripts]# echo $![root@mico scripts]# echo $_ Echo

Bash Shell常見的內部命令:echo、eval、exec、export、read、shift

echo參數說明

參數參數說明
-n不要追加換行
-e啟用下列反斜杠轉義的解釋
-E顯式地抑制對于反斜杠轉義的解釋

echo' 對下列反斜杠字符進行轉義: +\n:換行 +\r:回車 +\t:橫向制表符 +\b:退格 +\v:縱向制表符 +\c`:抑制更多的輸出

定義變量的方式

三種定義變量的方式

  • 直接賦值
  • 傳參 (傳遞參數)
  • 交互式設置變量,使用read命

read命令說明

在命令行中使用

[root@mico scripts]# read 132 [root@mico scripts]# echo $REPLY 132 [root@mico scripts]# read mico 456 [root@mico scripts]# echo $mico 456 [root@mico scripts]# echo $REPLY 132

在腳本中使用

[root@mico scripts]# vim mico_test.sh #!/bin/bash read -p '請輸入:' micoecho $mico 執行結果 [root@mico scripts]# sh mico_test.sh 請輸入:mico_znix mico_znix

read 命令的幫助說明

[root@mico scripts]# read --help -bash: read: --: 無效選項 read: 用法:read [-ers] [-a 數組] [-d 分隔符] [-i 緩沖區文字] [-n 讀取字符數] [-N 讀取字符數] [-p 提示符] [-t 超時] [-u 文件描述符] [-s不顯示終端的任何輸入] [名稱 ...]

定義方法實踐

直接賦值方法

[root@mico ~]# cat parameter.sh #!/bin/bash ############################################################## # File Name: parameter.sh # Version: V1.0 # Author: mico # Created Time : 2019-07-18 17:50:45 # Description: ############################################################## name=MICO age=18 sex=girl hobby=`ls` ethFile=/etc/sysconfig/network-scripts/ifcfg-eth0echo $hobby ls $ethFile [root@mico ~]# sh parameter.sh default.pass Django-Blog Django-Blog.tar parameter.sh practices scripts server test.sh variable.sh /etc/sysconfig/network-scripts/ifcfg-eth0

交互式設置變量 read

[root@mico ~]# vim keyword.sh #!/bin/bash ############################################################## # File Name: keyword.sh # Version: V1.0 # Author: mico # Created Time : 2019-07-18 18:42:31 # Description: ############################################################## read -p "請輸入您的學號:" number read -s -p "請輸入姓名:" name echo echo "您的學號:"$number echo "您的姓名:"$name [root@mico ~]# sh keyword.sh 請輸入您的學號:20190729 請輸入姓名: 您的學號:20190729 您的姓名:youka

寫一個交互腳本,實現能夠定義主機名及IP地址

腳本內容↓

[root@mico ~]# cat keyword.sh #!/bin/bash ############################################################## # File Name: keyword.sh # Version: V1.0 # Author: mico # Created Time : 2019-07-18 18:42:31 # Description: ############################################################## read -p "請輸入您的學號:" number read -s -p "請輸入姓名:" name echo echo "您的學號:"$number echo "您的姓名:"$name[root@mico ~]# vim host_start.sh [root@mico ~]# sh host_start.sh 請輸入主機名:mico 請輸入IP地址的主機位:180 是否重啟服務器:{yes/no}no 請稍后手動重啟系統!

變量的子串

變量子串說明

表達式說明
${parameter}返回變量$parameter的內容
${#parameter}返回變內容的長度(按字符),也適用于特殊變量
${parameter:offset}在變量${parameter}中,從位置offset之后開始提取子串到結尾
${parameter:offset:length}在變量${parameter}中,從位置offset之后開始提取長度為length的子串
${parameter#word}從變量${parameter}開頭開始刪除最短匹配的word子串
${parameter##word}從變量${parameter}開頭開始刪除最長匹配的word子串
${parameter%word}從變量${parameter}結尾開始刪除最短匹配的word子串
${parameter%%word}從變量${parameter}結尾開始刪除最長匹配的word子串
${parameter/pattem/string}使用string代替第一個匹配的pattern
${parameter//pattem/string}使用string代替所有匹配的pattern

計算變賦值的長度

  • echo $(#Mico) :這種方式最快
  • echo $Mico|wc -L
  • expr length "$Mico"
  • echo "$Mico"|awk '{print length($0)}'
[root@mico ~]# export TEMP="Here is Linux" [root@mico ~]# echo ${#TEMP} 13 [root@mico ~]# echo $TEMP|wc -L 13 [root@mico ~]# expr length "$TEMP" 13 [root@mico ~]# echo "$TEMP" Here is Linux [root@mico ~]# echo "$TEMP"|awk '{print length($0)}' 13 [root@mico ~]# time echo ${#TEMP} 13real 0m0.000s user 0m0.000s sys 0m0.000s [root@mico ~]# time echo $TEMP|wc -L 13real 0m0.002s user 0m0.000s sys 0m0.002s [root@mico ~]#

截取變量中的字符

[root@mico scripts]# mico=abcABC123ABCabc [root@mico scripts]# echo ${mico#abc} ABC123ABCabc [root@mico scripts]# echo ${mico##abc} ABC123ABCabc [root@mico scripts]# echo ${mico%abc} abcABC123ABC [root@mico scripts]# echo ${mico%%abc} abcABC123ABC [root@mico scripts]# echo ${mico#a*c} ABC123ABCabc [root@mico scripts]# echo ${mico##a*c}[root@mico scripts]# echo ${mico%a*c} abcABC123ABC [root@mico scripts]# echo ${mico%%a*c}[root@mico scripts]# echo ${mico#a*C} 123ABCabc [root@mico scripts]# echo ${mico#a*C} 123ABCabc [root@mico scripts]# echo ${mico##a*C} abc [root@mico scripts]# echo ${mico%a*c} abcABC123ABC [root@mico scripts]# echo ${mico%A*c} abcABC123 [root@mico scripts]# echo ${mico%%A*c} abc

替換變量內容

[root@mico scripts]# echo $mico abcABC123ABCabc [root@mico scripts]# echo ${mico/abc/mico} micoABC123ABCabc [root@mico scripts]# echo ${mico//abc/mico} micoABC123ABCmico

echo $(#parameter)處理最快的原因是一般情況下調用外部命令來處理的方式與使用內置操作的速度相差較大。在Shell編程中應該盡量使用內置命令。

有關獲取字符串長度的幾種統計方法的性能比較

  • 變量自帶的計算長度的方法效率最高,在要求效率的場景中盡量多用
  • 使用管道統計的方法的效率都比較差,在要求效率的場景中盡量不用
  • 對于日常簡單的腳本計算,可以根據自己所擅長的或易用的程度去選擇

有關上述匹配刪除的小結

+#表示從幵頭刪除匹配最短。

  • ##表示從開頭刪除匹配最長。
  • %表示從結尾刪除匹配最短。
  • %%表示從結尾刪除匹配最長。
  • a*c表示匹配的突符串,*表示匹配所有,a*c 匹配開頭為 a、中間為任意多個字符、結尾為c的字符串。
  • a*C表示匹配的字符串,*表示匹配所有,a*C 匹配開頭為 a、中間為任意多個字符、結尾為C的字符串。

有關替換的小結

  • 一個“/”表示替換匹配的第-個字符串。
  • 兩個“/”表示替換匹配的所有字符串。

Shell的特殊擴展變量說明

表達式說明
${parameter:-word}如果parameter的變量值為空或未賦值,則會返回word字符串并替代變量的值用途.如果變量未定義,則返回備用的值,防止變量為空值或因未定義而導致異常
${parameter:=word}如果parameter的變量值為空或未賦值,則設置這個變量值為word,并返回其值。位置變量和特殊變量不適用用途:基本同上一個${parameter>word},但該變量又額外給parameter變量賦值了
${parameter:?word}如果parameter變量值為空或未賦值,那么word字符串將被作為標準錯誤輸出,否則輸出變量的值。用途:用于捕捉由于變量未定義而導致的錯誤,并退出程序
${parameter:+word}如果parameter變量值為空或未賦值,則什么都不做,否則word字符串將替代變量的值

變量的數值計算

Shell中常見的算術運算符號

運算符意義 順序
++ - -增加及減少,可前置/可結尾由左至右
+一元正號由右至左
-一元負號由右手至左
邏輯與由右手至左
~位的取反由右手至左
* / %乘法、除法、取余數由左至右
+加法由左至右
-減法由左至右
<< >>向左位移、向右位移由左至右
< <= > >=比較運算符由左至右
== !=相等 不相等由左至右
&位的AND由左至右
^位的Exclusive OR由左至右
|位的OR由左至右
&&邏輯AND由左至右
||邏輯OR由左至右
?:條件表達式由右至左
= += -= *= /= %= &= ^=賦值運算符

Shell中常見的算術運算命令

運算操作符與運算命令意義
(())用于整數運算的常用運算符,效率高
let用于整數運算,類似于"(())"
expr可用于整數運算,但還有很多其他的額外功能
bcLinux下的一個計算器程序(適合整數以及小數運算)
$[]用于整數的運算
awkawk既可以用于整數運算,也可以用于小數運算
declare定義變量值和屬性,-i參數可以用于定義整形變量,做運算

雙小括號(())的操作方法

運算操作符與運算命令意義
((i=i+1))此種書寫方法為運算后賦值法,即將i+1的運算結構賦值給變量i。注意,不能用"echo((i=i+1))"的形式輸出表達式的值,但可以用echo$((i=i+1))輸出其值
i=$((i+1))可以在"(())"前加$符,表示將表達式運算后復制給i
((8>7&&5==5))可以進行比較操作,還可以加入邏輯與和邏輯或,用于條件判斷
echo $((2+1))需要直接輸出運算表達式的運算結果時,可以在"(())"前加$符

【提示】上面涉及的數字及變量必須為整數(整型),不能是小數(浮點數)或字符串。后面的bc和awk命令可以用于進行小數(浮點數)運算,但一般用到的較少。

僅支持整數的運算

echo $((數學運算表達式))
# 形式一 [root@mico scripts]# echo $((1 + 1)) 2 [root@mico scripts]# echo $((2*7-3/6+5)) 19 # 形式二 [root@mico scripts]# ((mico=2*8)) [root@mico scripts]# echo $mico 16 # 形式三 [root@mico scripts]# znix=$((2*7-3/6+5)) [root@mico scripts]# echo $znix 19
延伸產物(重要)
  • i++ 自增1
  • i-- 自減1
  • ++i
  • --i

示例:

[root@mico scripts]# i=1 [root@mico scripts]# echo $((i++)) 1 [root@mico scripts]# echo $((i++)) 2 [root@mico scripts]# echo $((i--)) 3 [root@mico scripts]# echo $((i--)) 2 [root@mico scripts]# echo $((i--)) 1 [root@mico scripts]# echo $((++i)) 1 [root@mico scripts]# echo $((++i)) 2 [root@mico scripts]# echo $((++i)) 3 [root@mico scripts]# echo $((--i)) 2 [root@mico scripts]# echo $((--i)) 1 [root@mico scripts]# echo $((--i)) 0

記憶方法:++,--
變量a在前,表達式的值為a,然后a自增或自減,變量a在符號后,表達式值自增或自減,然后a值自增或自減。

let命令

[root@mico scripts]# i=1 [root@mico scripts]# i=i+1 [root@mico scripts]# echo $i i+1[root@mico scripts]# i=1 [root@mico scripts]# let i=i+1 [root@mico scripts]# echo $i 2

expr 命令

  • 整數計算
  • 判斷擴展名
  • 判斷輸入是否為整數,非整數返回值為2
  • 計算變量的長度
示例
[root@mico scripts]# expr 1+1 1+1 [root@mico scripts]# expr 1 + 1 2 [root@mico scripts]# expr 1 * 1 expr: 語法錯誤 [root@mico scripts]# expr 1 \* 1 1
非整數返回值為2 示例:
[root@mico scripts]# expr 1 + 1 2 [root@mico scripts]# echo $? 0 [root@mico scripts]# expr -1 + 1 0 [root@mico scripts]# echo $? 1 [root@mico scripts]# expr a + 1 expr: 非整數參數 [root@mico scripts]# echo $? 2 $[]運算符 [root@mico scripts]# echo $[1+2] 3 [root@mico scripts]# echo $[1-2] -1 [root@mico scripts]# echo $[1*2] 2 [root@mico scripts]# echo $[1/2] 0

typeset 命令進行運算

[root@mico scripts]# typeset -i A=2017 B=2018 [root@mico scripts]# A=A+B [root@mico scripts]# echo $A 4035

可以進行小數運算的命令

bc 命令

# 安裝 bc 依賴于base源 [root@mico scripts]# yum -y install bc交互模式測試bc命令 [root@mico scripts]# bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. 1+1 2 [root@mico scripts]# echo 1+1.1|bc 2.1

免交互模式測試bc命令

[root@mico scripts]# echo 'scale=6;1/3'|bc .333333 python 命令 [root@mico scripts]# file `which yum ` /usr/bin/yum: Python script, ASCII text executable [root@mico scripts]# python >>> import os >>> os.system('df -h') >>> 1+1.1 2.1 >>>exit()

awk 命令

[root@mico ~]# echo "7.7 3.8"|awk '{print ($1-$2)}' 3.9 [root@mico ~]# echo "358 113"|awk '{print ($1-3)/$2}' 3.14159 [root@mico ~]# echo "3 9"|awk '{print ($1+3)*$2}' 54 [root@backup scripts]# awk BEGIN'{print 1.2+3.3}' 4.5

運算相關練習題

【練習題】實現一個加減乘除等功能的計算器

實現腳本:

[root@mico scripts]# cat calculator.sh #!/bin/bashread -p "請輸入第一個整數:" a read -p "請輸入第二個整數:" becho $a + $b =$(($a+$b)) echo $a - $b =$(($a-$b)) echo $a \* $b =$(($a*$b)) echo $a / $b =$(($a/$b))腳本執行過程: [root@mico scripts]# sh calculator.sh 請輸入第一個整數:12 請輸入第二個整數:12 12 + 12 =24 12 - 12 =0 12 * 12 =144 12 / 12 =1
精簡方法
[root@mico scripts]# vim calculator2.sh #!/bin/bashecho $(($1))腳本執行過程: [root@mico scripts]# sh calculator2.sh 1+1 2 [root@mico scripts]# sh calculator.sh 1*9 9

【練習題】打印結果1+2+3+4+5+6+7+8+9+10=55

腳本內容

[root@mico scripts]# vim count.sh #!/bin/bashNum=`seq -s + 1 10` echo $Num=$(($Num))

腳本執行結果

[root@mico scripts]# sh count.sh 1+2+3+4+5+6+7+8+9+10=55

補充說明

shell腳本中批量注釋的方法
<<'EOF'

文件內容
EOF 或使用 exit 可以注釋其之后的所有內容(類似注釋,實質為不執行后面的內容)

轉載于:https://www.cnblogs.com/vicodona/p/11200117.html

總結

以上是生活随笔為你收集整理的Shell编程入门基础上的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产高清免费视频 | 青青河边草免费视频 | 一区二区 精品 | 国产精品久久久久久久久久久免费 | 粉嫩av一区二区三区四区 | 国产视频在线观看免费 | 中文在线www| 黄毛片在线观看 | 国产精品自产拍在线观看桃花 | 黄在线免费看 | 国产一级在线观看 | 99色国产| 免费日韩一区二区三区 | 日韩有码在线观看视频 | 久久久久五月天 | 成人av一区二区三区 | 成人欧美一区二区三区黑人麻豆 | 日韩特黄一级欧美毛片特黄 | 日韩久久精品一区 | 五月天激情在线 | 国产精品视频免费在线观看 | 亚洲综合欧美精品电影 | 国产高清在线 | 日韩综合视频在线观看 | 超碰九九| 在线观看日韩 | 精品国内自产拍在线观看视频 | 成人资源站 | 4p变态网欧美系列 | 99 视频 高清 | 免费看的av片 | 久久不卡电影 | 91尤物国产尤物福利在线播放 | 国产精品私人影院 | 国产手机视频在线观看 | 中文字幕国产一区 | 欧美日韩伦理一区 | 免费不卡中文字幕视频 | 伊人婷婷久久 | 欧美日韩中文字幕视频 | 91色影院 | 久久人人精| 九九免费精品视频 | 精品国产电影一区二区 | 成人免费在线观看入口 | 在线黄av| 欧美ⅹxxxxxx | 欧美人人爱 | 免费精品视频在线 | 国产一区观看 | 国产淫片免费看 | 亚洲日本va午夜在线电影 | 欧美另类tv | 深爱婷婷网 | 日本中文字幕高清 | 91在线观看视频网站 | 免费黄色在线播放 | 97超碰免费 | 免费三级a| 久久一线 | 免费黄色a网站 | 91成人亚洲 | 久久久鲁 | 欧美亚洲另类在线视频 | 国产精品一区二区在线观看免费 | 日本精品视频在线播放 | 国产亚洲精品bv在线观看 | 伊人狠狠操 | 最近2019年日本中文免费字幕 | 91精品国自产在线观看欧美 | 国产区精品视频 | 亚洲精品视 | 亚洲少妇xxxx | 亚州精品一二三区 | 在线播放日韩av | 国产成人亚洲在线电影 | 国产精品自产拍在线观看 | 欧美日韩视频一区二区 | 久久久www免费电影网 | 欧美 日韩 性 | 精品国产免费人成在线观看 | 成人久久毛片 | 日韩精品高清视频 | 日韩经典一区二区三区 | 婷婷草 | 亚洲黄色片在线 | 久久免费毛片视频 | 国产看片免费 | 久久久久久久国产精品视频 | 久久久久久久久久久国产精品 | 欧美乱大交 | 又色又爽又黄高潮的免费视频 | 国产一卡二卡四卡国 | 久久经典视频 | 丁香激情综合国产 | 午夜视频在线观看一区二区三区 | 久久精品精品电影网 | 玖玖国产精品视频 | 久久久久久免费视频 | 五月婷婷中文 | 九九精品毛片 | 久久99网 | 亚洲高清av | 香蕉视频在线免费 | 夜夜澡人模人人添人人看 | 久久成人在线视频 | 欧美激情第八页 | 奇人奇案qvod | 久久精品成人 | 国产精品va在线观看入 | 久久精品视频中文字幕 | 色偷偷av男人天堂 | 日本黄色片一区二区 | 天天噜天天色 | 精品国产乱码久久久久久三级人 | 亚州精品在线视频 | 亚洲精品动漫在线 | 五月天丁香亚洲 | 天天看天天干天天操 | 四虎精品成人免费网站 | 久久久久激情视频 | 国产精品一区在线 | 99久久影视 | 亚洲专区欧美专区 | 久久免费电影 | 欧美日韩国产一区二区在线观看 | 五月天综合网站 | 美女黄视频免费看 | 久操视频在线 | 成人国产精品电影 | 久久99国产精品视频 | 成人香蕉视频 | 免费能看的av | 精品在线一区二区三区 | 九九精品久久久 | 欧美电影黄色 | 一区二区三区韩国免费中文网站 | 九色91在线视频 | 中文国产在线观看 | 中文伊人 | 日韩一级电影在线观看 | 色人久久 | 综合网伊人 | 久久久久久久福利 | 亚洲一区视频在线播放 | 天天爱天天 | 精品久久久久久一区二区里番 | 国产一区二区在线精品 | 精品久久久久久亚洲综合网站 | 91视频亚洲 | 色噜噜色噜噜 | 黄色的网站在线 | 久久激情久久 | 亚洲午夜久久久影院 | 97超碰在线资源 | 99久精品视频 | 亚洲一区二区三区四区精品 | 久久亚洲精品电影 | 亚洲天堂网在线视频 | 99精品视频免费全部在线 | 久久综合九色综合97_ 久久久 | 中文字幕欧美日韩va免费视频 | 美女网站视频久久 | 亚洲国产成人在线观看 | 91污污| 草久热 | 91在线区 | 国产精彩在线视频 | 国产无限资源在线观看 | 欧美精品天堂 | 黄在线免费看 | 91在线亚洲 | 97人人超碰在线 | 一区二区视频在线观看免费 | 国内小视频在线观看 | 手机看片国产日韩 | 亚洲免费视频在线观看 | 久爱综合 | 日韩av电影国产 | 久草97| 亚洲国产成人在线观看 | 亚洲视频综合在线 | 日韩三级免费观看 | 久久精品久久综合 | 亚洲精品www久久久 www国产精品com | 亚洲在线激情 | 一区二区理论片 | 日韩毛片在线一区二区毛片 | 香蕉精品在线观看 | 91成人精品国产刺激国语对白 | 免费在线观看国产黄 | 国产区精品在线观看 | 久久久久久美女 | 在线国产日韩 | 国产91免费在线观看 | 亚洲精品黄色片 | 欧美日韩成人一区 | 人人干人人草 | 手机av电影在线观看 | 国产福利电影网址 | 国产精品青草综合久久久久99 | 欧美专区国产专区 | 国内精品久久久精品电影院 | 69夜色精品国产69乱 | av成人免费在线 | 亚洲一区二区三区精品在线观看 | 岛国av在线| 亚洲精品免费观看视频 | 亚洲乱亚洲乱妇 | 久久久久久久99精品免费观看 | 免费在线色视频 | 成人免费亚洲 | 日韩亚洲在线观看 | 亚洲经典中文字幕 | 麻豆免费视频网站 | 97超碰人人| 婷婷六月天丁香 | 亚洲毛片一区二区三区 | 97国产精品一区二区 | 99免费在线播放99久久免费 | 亚洲国产手机在线 | 日本一区二区三区免费看 | 免费观看黄色av | 在线观看亚洲国产 | 日韩美女高潮 | 丁香五月亚洲综合在线 | 色婷婷六月 | 日韩在线观看的 | 九九国产视频 | 99热官网 | 97精品国产97久久久久久 | 在线天堂中文在线资源网 | 91视频a | 黄污网站在线 | 99在线热播精品免费 | 色天天 | 一区二区三区在线免费 | 国内视频在线 | 色噜噜在线观看 | 久久久私人影院 | 在线视频免费观看 | 97电影在线| 久久久久久久久久久久电影 | av播放在线| 欧美日韩一区二区三区在线免费观看 | 国产做aⅴ在线视频播放 | 在线亚洲播放 | 69国产精品视频免费观看 | 亚洲日韩欧美视频 | 国产精品日韩 | 一区二区三区四区不卡 | 在线91精品 | 一级理论片在线观看 | 丁香av| 国产九九九精品视频 | 三三级黄色片之日韩 | 久久一区二区免费视频 | 黄色a在线观看 | 久久精品久久精品 | 中国精品少妇 | 久久亚洲欧美日韩精品专区 | 国产精品夜夜夜一区二区三区尤 | 精品999在线观看 | 久久久污 | 欧美日本国产在线观看 | 狠狠色香婷婷久久亚洲精品 | 久久婷婷视频 | av高清免费 | 欧美激情精品久久久久久免费印度 | 欧美a级成人淫片免费看 | 丁香花在线视频观看免费 | 激情综合亚洲精品 | 成人宗合网 | 久草网站 | 国产一区成人在线 | 夜夜高潮夜夜爽国产伦精品 | 亚洲资源在线观看 | 五月婷婷另类国产 | 欧美日韩大片在线观看 | 97天堂| a色网站 | 欧美一级电影片 | 在线中文字幕一区二区 | 亚洲精品久久在线 | 毛片网免费 | 91av电影在线观看 | www.色午夜 | 色综合a| 999国产| 色婷婷狠狠五月综合天色拍 | 丰满少妇一级片 | 亚洲日本欧美在线 | 97视频在线观看播放 | 色综合久久久久网 | 色综合久久久网 | 日本精品视频免费观看 | 国产亚洲亚洲 | 国产免费叼嘿网站免费 | 亚洲另类交| 久久毛片网 | 91精品爽啪蜜夜国产在线播放 | 国产粉嫩在线观看 | 亚洲精品午夜久久久久久久久久久 | 久久久穴 | 久久艹久久 | 中文字幕在线播放日韩 | 国产成人一区二 | a午夜电影 | 国产高清久久 | 91av亚洲| 日韩欧美在线综合网 | 午夜国产福利在线 | 五月婷婷,六月丁香 | 91麻豆精品一区二区三区 | 国产亚洲精品中文字幕 | 在线视频一区二区 | 五月天伊人 | 精品国产乱码久久久久久1区2匹 | 免费情趣视频 | 色丁香综合 | 九九热只有这里有精品 | 深夜精品福利 | 99国产成+人+综合+亚洲 欧美 | 久99久中文字幕在线 | 国产精品精品国产婷婷这里av | 欧美在线1 | 成 人 黄 色 视频 免费观看 | 成人黄色av免费在线观看 | 亚洲国产成人在线观看 | 美女天天操| 日韩av手机在线看 | 欧美国产一区在线 | av再线观看| 精品久久久国产 | 一级片视频免费观看 | 亚洲精品小视频 | 在线观看免费一级片 | 人人澡av| 国模一二三区 | 免费色av | www操操| 天天操夜夜操国产精品 | 高清av中文字幕 | 免费看黄电影 | 福利片视频区 | 香蕉视频网站在线观看 | 日韩一二区在线观看 | 69av视频在线观看 | 亚洲精选国产 | 久久激情视频 | 日韩电影一区二区三区在线观看 | 中文视频在线 | 欧美日本一区 | 麻豆免费在线播放 | 亚洲免费av网站 | 久久99热久久99精品 | 狠狠色丁香婷婷综合久小说久 | 国产精品v欧美精品v日韩 | 中文字幕一区二区三区四区在线视频 | 久久男人中文字幕资源站 | 日本久久久久久久久 | 国产精品区免费视频 | 91精品久久久久久久久久入口 | jizz999| 天天操天天操天天操天天操天天操天天操 | 国偷自产视频一区二区久 | 高清不卡一区二区在线 | 久久99欧美| 又长又大又黑又粗欧美 | 久久高清精品 | 日韩成人一级大片 | 午夜久久久久久久 | 国产在线不卡视频 | www.夜夜草| 国产片免费在线观看视频 | av激情五月 | 91九色最新 | 精壮的侍卫呻吟h | 麻豆成人网| 日日干日日色 | 99久久精品无免国产免费 | 视频 国产区 | 国产永久免费观看 | 久久99精品国产麻豆宅宅 | 免费av网站在线看 | 在线亚洲精品 | av东方在线 | 国产99久久99热这里精品5 | 日日摸日日添日日躁av | 久久伊人免费视频 | 黄色毛片视频免费 | 午夜精品久久久久久久爽 | 亚洲欧美在线视频免费 | 麻豆高清免费国产一区 | 激情视频一区二区 | 一区二区三区免费在线观看视频 | 99中文字幕在线观看 | 99这里都是精品 | 久久成人国产精品入口 | 日韩性色 | 四虎影视精品成人 | 91av视频免费在线观看 | 日本三级不卡视频 | 国产经典三级 | 激情综合电影网 | 色之综合网 | 国产成人a v电影 | 啪啪肉肉污av国网站 | 91视频麻豆视频 | 国产在线看 | 日韩欧美不卡 | 久久精品艹 | 亚洲色图激情文学 | 精品中文字幕在线观看 | 免费合欢视频成人app | 日韩久久片 | 91香蕉国产在线观看软件 | 成人久久久电影 | 色偷偷男人的天堂av | 免费看片网址 | 国产亚洲午夜高清国产拍精品 | 欧美成人视 | 麻豆精品视频在线 | 欧美亚洲专区 | 一级片免费在线 | 免费成人在线网站 | av在线一二三区 | 欧美aa在线 | 丝袜美女视频网站 | 在线综合 亚洲 欧美在线视频 | 国产一区在线看 | 国产一线二线三线在线观看 | 亚洲午夜精品电影 | 免费av片在线 | 国产成人亚洲在线观看 | 日韩精品三区四区 | 91成人免费看片 | 日本久热| 成人免费一区二区三区在线观看 | 最新日韩视频在线观看 | 亚洲视频在线免费看 | 96亚洲精品久久久蜜桃 | 中文字幕亚洲不卡 | 成人污视频在线观看 | 在线观看黄色 | 日韩天堂网 | 色黄视频免费观看 | 国产成人一区在线 | 日韩com| 91九色在线播放 | 日韩在线观看网站 | 天天躁天天狠天天透 | 久久成人国产 | 亚洲三级黄 | 91色偷偷| 亚洲美女精品 | 96视频在线| 2019免费中文字幕 | 麻豆综合网 | 热热热热热色 | 日韩av一区二区在线 | www.夜夜干.com | 特黄特色特刺激视频免费播放 | 国产最新网站 | 欧美天堂视频在线 | 波多野结衣一区二区 | 一区在线免费观看 | 日韩videos高潮hd | 在线观看日韩 | 中文字幕a∨在线乱码免费看 | 免费又黄又爽视频 | 国际av在线 | 欧美国产日韩久久 | 91免费在线 | 亚洲作爱视频 | 久久国产精品系列 | 色美女在线 | 一本一道久久a久久精品蜜桃 | 国产精品一区二区免费视频 | 中文字幕第 | 日韩激情视频在线观看 | 国产一级免费电影 | 久久久久久久精 | 国产原创在线视频 | 欧美激情视频一二三区 | 国产.精品.日韩.另类.中文.在线.播放 | 久久综合狠狠综合 | 亚洲影音先锋 | www.亚洲精品视频 | 国产亚洲精品美女 | 国产片免费在线观看视频 | 久久综合五月天 | 久久久久久久久久福利 | 91丨九色丨国产丨porny精品 | 在线免费观看欧美日韩 | 五月开心六月伊人色婷婷 | av三级在线免费观看 | 手机在线观看国产精品 | 国产一区二区三区高清播放 | 久亚洲| 欧美伦理一区二区三区 | 五月婷婷操 | 亚欧日韩av| 91片在线观看 | 黄色片免费电影 | 激情在线网站 | 欧美乱淫视频 | 日日爽天天爽 | 91视频 - 114av | 国产99久久久精品 | 久久国产品| 久久精精品| 免费色视频网站 | 超碰com| 日韩在线理论 | 亚洲欧美日韩精品一区二区 | 国产精品色婷婷视频 | 97网在线观看 | 国产人成看黄久久久久久久久 | 色欲综合视频天天天 | 国产视频亚洲精品 | 精品一区精品二区 | 精品一区二区在线免费观看 | 国产一区二区不卡视频 | 麻豆视频在线免费观看 | 91麻豆精品91久久久久同性 | 婷婷在线五月 | 日日夜操| 国产精品综合久久久久久 | 国产资源精品在线观看 | 国产在线精品一区二区三区 | 亚洲激情六月 | 激情久久综合网 | 成人免费亚洲 | 国产99免费视频 | 超碰久热 | 岛国一区在线 | 亚洲激情在线视频 | 国产成人一区二区三区久久精品 | 久久久久看片 | 欧美夫妻性生活电影 | 麻豆久久久久久久 | 国产黄色片网站 | 久久久久国产精品一区二区 | 久久精品首页 | 亚洲成人动漫在线观看 | 国产精品久久久久一区 | 三日本三级少妇三级99 | 久久人人做 | 91看片淫黄大片一级在线观看 | 综合久久久久 | 成人免费观看完整版电影 | 婷婷在线资源 | 国产资源在线播放 | 日本中文字幕免费观看 | 一区二区三区四区五区在线视频 | 日韩视频www| 香蕉影院在线 | 亚洲男男gaygay无套同网址 | 最新国产视频 | 2020天天干夜夜爽 | 美女黄频在线观看 | 亚洲无人区小视频 | 99精品视频在线观看免费 | 伊人五月在线 | 99热国产精品 | 91九色在线播放 | 免费观看性生交 | 国产专区一 | 国产精品九九九九九九 | 国语久久 | 欧美精品xxx | 免费人成在线观看网站 | 国产福利91精品张津瑜 | www夜夜操com| 精品久久久久久亚洲 | 麻豆激情电影 | 成人午夜黄色影院 | 激情五月婷婷综合 | 国产伦理一区二区 | 国产日韩欧美在线影视 | 国产伦精品一区二区三区高清 | 免费在线观看中文字幕 | 成人久久久精品国产乱码一区二区 | 99热这里只有精品久久 | 午夜三级福利 | 最新国产精品亚洲 | 色噜噜噜| 欧美成人猛片 | 精品国产伦一区二区三区观看方式 | 一本一本久久a久久精品综合小说 | 欧美一区二区三区在线观看 | 久久怡红院 | 日韩高清在线观看 | 国产色婷婷精品综合在线手机播放 | 久草在线观看 | 国产一二三在线视频 | 五月天婷亚洲天综合网精品偷 | av在线等 | 日p在线观看| 国内精品久久久久久久97牛牛 | 国产伦精品一区二区三区… | 91精品伦理| 99久久婷婷国产综合精品 | 在线看黄网站 | 久色 网 | 成人h在线观看 | 成人毛片在线观看 | 中文字幕一区二区三区在线播放 | 国产99久久久精品 | 人人爽人人爽人人爽人人爽 | 天天射狠狠干 | 国产精品乱码久久久久 | 91桃色在线观看视频 | 特级西西444www大胆高清无视频 | 天天做综合网 | 久久免费的视频 | 福利视频网址 | 99 色 | 国模精品在线 | 伊人永久在线 | 国产精品国产三级国产aⅴ无密码 | 免费网站看v片在线a | 日韩精品久久中文字幕 | 久久亚洲欧美日韩精品专区 | 精品国产伦一区二区三区观看方式 | 黄色亚洲片 | 国产综合视频在线观看 | 久久免费黄色大片 | 国产精品一区二区三区视频免费 | 97超碰人 | 国产在线观看91 | 欧美九九视频 | 久久福利精品 | 国产精品毛片网 | 国产大陆亚洲精品国产 | 日韩免费不卡av | 99热在线看| 国产高清视频在线 | 99爱视频在线观看 | 六月丁香婷婷久久 | 超碰大片| 97超碰在线免费 | 黄色影院在线免费观看 | 国产精品一区二区中文字幕 | 在线免费观看视频你懂的 | 久草在线观看 | 色橹橹欧美在线观看视频高清 | 亚洲综合情 | 欧美激情精品久久 | 亚一亚二国产专区 | 91大神在线观看视频 | 黄色aa久久 | 久久精品这里热有精品 | 欧美性生爱 | 欧美美女一级片 | 91cn国产在线| 亚洲黄色三级 | 97精品国产97久久久久久 | 久久久久久久久久免费视频 | 九七在线视频 | 日韩高清网站 | 亚洲精品国产综合99久久夜夜嗨 | 国产无吗一区二区三区在线欢 | 精品久久一区二区三区 | 91pony九色丨交换 | 中文字幕免费国产精品 | 亚洲国产日韩在线 | 成人久久久久久久久久 | 欧美大片第1页 | 91精品秘密在线观看 | 久久免费精品 | 婷婷色站 | 国产一级不卡毛片 | 91成人亚洲| 欧美 激情 国产 91 在线 | 最近免费中文字幕大全高清10 | 97电影网手机版 | 一区二区在线电影 | 国产精品一区二区三区在线看 | 久久久久久久国产精品 | 最新的av网站 | 久久久亚洲网站 | 国产福利午夜 | 色视频网站免费观看 | 91成人黄色 | 成年人视频在线观看免费 | 成人一级电影在线观看 | 美女又爽又黄 | 国产一区二区精品在线 | 手机av片 | 狠狠干狠狠色 | 国产亚洲一级高清 | 日韩精品极品视频 | 成 人 黄 色 视频播放1 | 在线涩涩| 欧美日韩观看 | 久久色中文字幕 | 丁香婷婷综合五月 | 深爱激情五月婷婷 | 成人免费视频网站在线观看 | av免费网页 | 网站在线观看日韩 | 久久久久女人精品毛片九一 | 国产精品一区二区久久国产 | 麻豆国产在线视频 | 亚洲黄色一级视频 | 色姑娘综合 | 亚洲精品国产日韩 | 日韩高清免费电影 | 国产精选在线观看 | a在线观看国产 | 国产精品久久久毛片 | 少妇bbb好爽 | 有码中文字幕在线观看 | 中文字幕在线观看完整版电影 | 在线看成人av | 午夜美女视频 | 亚洲精品综合久久 | 91精品久久香蕉国产线看观看 | 国内精品久久久久影院一蜜桃 | 国产美女久久 | 天天操天天射天天插 | 久久伦理影院 | 波多野结衣在线播放视频 | 成年人av在线播放 | av 一区二区三区四区 | 好看av在线 | 日韩视频一区二区 | 国产剧情在线一区 | 国产精品视频99 | 日韩久久午夜一级啪啪 | 婷婷国产v亚洲v欧美久久 | 日韩欧美在线免费观看 | 欧美日韩破处 | 欧美a级一区二区 | 人人超碰人人 | 69人人| adc在线观看 | 最近中文字幕在线中文高清版 | 丁香婷婷激情国产高清秒播 | 国产一区91 | 99精品一区二区 | 国产精品24小时在线观看 | 国产精品观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 久久美女电影 | 91精品国产自产在线观看永久 | 超碰免费公开 | 国产探花视频在线播放 | 久久伦理电影 | 亚洲日本中文字幕在线观看 | 五月天久久久久 | 亚洲日本色 | 丰满少妇高潮在线观看 | 久草在线资源网 | 中文字幕永久在线 | 国产小视频免费在线网址 | 日本精品久久久久影院 | 在线观看一级 | 超碰免费av | 精品久久免费 | 三上悠亚一区二区在线观看 | 日本久久片 | 久久精品一级片 | 久久综合影院 | 国产一二区视频 | 免费下载高清毛片 | 精品国产电影一区二区 | 色婷婷97| 久久看免费视频 | 久保带人 | 欧美一级片在线观看视频 | 激情久久一区二区三区 | 国产在线污 | 天天射天天舔天天干 | 亚洲欧美日本一区二区三区 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | bbbb操bbbb | 91av资源在线 | 天天综合五月天 | 国产精品视频99 | 亚洲国产精品成人av | 91桃色国产在线播放 | 久久天天躁夜夜躁狠狠躁2022 | 国产免费又粗又猛又爽 | 亚洲最新av在线 | 久久调教视频 | 一区二区中文字幕在线观看 | 天天躁日日躁狠狠躁av中文 | 亚洲国产一区在线观看 | 免费日韩 精品中文字幕视频在线 | 中文字幕中文中文字幕 | 国产成在线观看免费视频 | a√天堂资源 | 97精品国产aⅴ | 999成人网 | 在线电影91 | 国产精品综合av一区二区国产馆 | 麻豆视频www | 丁香五香天综合情 | 在线综合 亚洲 欧美在线视频 | 亚洲丝袜一区二区 | 欧美一级小视频 | 午夜精品久久久久久久99 | 天天夜夜亚洲 | 女人高潮特级毛片 | 国产精品免费久久久久久 | 国产精品二区在线观看 | 亚洲一区不卡视频 | 福利视频入口 | 丁香五香天综合情 | 国产99久久久精品 | 日韩网| 精品久久久久久国产偷窥 | 国产一区二区三区午夜 | 国产一级片免费视频 | 五月婷婷在线视频 | 在线观看亚洲精品 | 夜色.com| 91亚洲精品乱码久久久久久蜜桃 | av中文字幕av| 亚洲一区二区高潮无套美女 | 亚洲二区精品 | av福利在线播放 | 国产xxxx性hd极品 | 黄色毛片一级片 | 天天干人人插 | 亚洲成人精品影院 | 在线岛国av | 久久天天躁狠狠躁亚洲综合公司 | 国产美腿白丝袜足在线av | 日韩在线视频免费看 | 久久99电影| 一二三区av | www99精品| 日批网站在线观看 | 香蕉视频在线免费看 | 日韩色综合网 | 久久精品视频免费播放 | 国产区免费在线 | 精品国产一区二区三区久久久蜜臀 | 亚洲精品国产精品乱码在线观看 | 国产一区二区视频在线 | 在线观看免费成人av | 亚洲一级特黄 | 色婷婷导航 | 深爱激情综合网 | 中文伊人| 免费国产在线精品 | 日韩不卡高清视频 | 四虎成人网 | 亚洲五月六月 | avav片 | 国产不卡一区二区视频 | 激情综合网在线观看 | 永久免费av在线播放 | 久久狠狠一本精品综合网 | 国产精品一区二区无线 | 色综合久久88色综合天天人守婷 | 亚洲在线视频网站 | 粉嫩av一区二区三区四区 | 久草在线视频网站 | 久久99精品久久久久久久久久久久 | 黄色成人在线观看 | 久久99精品国产麻豆宅宅 | 我爱av激情网 | 四虎www | 免费在线中文字幕 | 四虎影视成人永久免费观看视频 | 免费福利片2019潦草影视午夜 | 欧美成人一区二区 | 久久精品专区 | 国产伦理久久 | 九九一级片 | 久久狠狠亚洲综合 | 日韩在线第一区 | 婷婷综合久久 | 在线99热 | 在线免费观看av网站 | 精品国产亚洲日本 | 91香蕉视频黄色 | 日韩视频免费 | 二区视频在线观看 | 九九热精品视频在线观看 | 97超碰精品 | 日韩黄色一级电影 | 91爱爱电影 | 日本二区三区在线 | 日韩黄在线观看 | 久久欧美精品 | av免费试看 | 97品白浆高清久久久久久 | 黄色av高清 | 国产精品午夜免费福利视频 | av资源中文字幕 | 亚洲精品午夜久久久久久久久久久 | 手机看片久久 | 色婷婷精品大在线视频 | 日韩精品中文字幕久久臀 | 日韩试看 | 超碰999| 久久精品综合视频 | 国产成人免费观看久久久 | 黄色大片视频网站 | 99热精品在线观看 | 麻豆91在线观看 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产日产精品一区二区三区四区的观看方式 | 久久久久久久免费观看 | 久久久av电影 | 国产精品久久久久久久久久不蜜月 | 精品少妇一区二区三区在线 | 免费看的黄色 | 成年人在线免费看视频 | 黄色软件网站在线观看 | 激情五月***国产精品 | 国产91在线 | 美洲 | 日韩狠狠操 | 成年人免费在线看 | 成人sm另类专区 | 香蕉视频网址 | 国产色影院 | 久草在线网址 | 国产不卡av在线播放 | 婷婷精品国产一区二区三区日韩 | 精品一区 在线 | 日韩一区二区三免费高清在线观看 | 超碰97公开 | 亚洲视频免费在线观看 | 91毛片在线观看 | 免费在线观看日韩视频 | 91av大全| va视频在线观看 | 91综合视频在线观看 | 国产在线观看91 | 成人超碰在线 | 国产精品免费久久久久久久久久中文 | 亚洲精品乱码久久 | 国产一区在线免费观看视频 | 久久久久亚洲精品中文字幕 | 国产福利不卡视频 | 91人人澡人人爽人人精品 | 天天射天天干天天插 | 国内成人综合 | 国产中文字幕免费 | 黄色aa久久| 麻豆国产精品视频 | 精品一区二区免费 | 久久国产免费视频 | 综合在线观看色 | 亚洲一级片av | 国产日韩欧美在线影视 | 视频在线观看国产 | 国产视频一区在线免费观看 | 久久久91精品国产一区二区精品 | 国产韩国日本高清视频 | 欧美在线18 | 黄色大全免费观看 | 在线观看视频国产一区 | 尤物九九久久国产精品的分类 | 久久久久综合视频 | 亚洲精品一区二区三区四区高清 | 91一区二区三区久久久久国产乱 | 伊人天天| 国产在线超碰 | 麻豆观看| 九色91在线视频 | 91色在线观看 | 亚洲成人频道 | 久久久黄色免费网站 | 亚洲美女视频网 | av久久久久久 | 在线观看视频在线观看 | 国产精品白浆 | 黄网站免费看 | 国产一级电影免费观看 | 深夜福利视频一区二区 | 免费在线成人 | 成人蜜桃视频 | 日日麻批40分钟视频免费观看 | 久久av不卡 | 在线探花 | 在线欧美小视频 | 99九九视频 | 亚洲美女免费精品视频在线观看 | 国产黑丝袜在线 | 日韩午夜大片 | 最新日韩精品 | 人人爽人人爽人人片av | 五月天中文在线 | 国产精品va视频 | 九月婷婷人人澡人人添人人爽 | 久久精选视频 | 久操伊人 | 热久久影视 | 91成人欧美 | 久久麻豆精品 |