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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

如何编写一个shell脚本

發(fā)布時間:2025/3/8 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何编写一个shell脚本 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文結(jié)合大量實例闡述如何編寫一個shell腳本。

  為什么要進行shell編程

  在Linux系統(tǒng)中,雖然有各種各樣的圖形化接口工具,但是sell仍然是一個非常靈活的工具。Shell不僅僅是命令的收集,而且是一門非常棒的編程語言。您可以通過使用shell使大量的任務(wù)自動化,shell特別擅長系統(tǒng)管理任務(wù),尤其適合那些易用性、可維護性和便攜性比效率更重要的任務(wù)。

  下面,讓我們一起來看看shell是如何工作的:

  建立一個腳本

  Linux中有好多中不同的shell,但是通常我們使用bash (bourne again shell) 進行shell編程,因為bash是免費的并且很容易使用。所以在本文中筆者所提供的腳本都是使用bash(但是在大多數(shù)情況下,這些腳本同樣可以在bash的大姐,bourne shell中運行)。

  如同其他語言一樣,通過我們使用任意一種文字編輯器,比如nedit、kedit、emacs、vi等來編寫我們的shell程序。程序必須以下面的行開始(必須方在文件的第一行):

  •   #!/bin/sh
  •   符號#!用來告訴系統(tǒng)它后面的參數(shù)是用來執(zhí)行該文件的程序。在這個例子中我們使用/bin/sh來執(zhí)行程序。

      當編輯好腳本時,如果要執(zhí)行該腳本,還必須使其可執(zhí)行。

      要使腳本可執(zhí)行:

      chmod +x filename

      然后,您可以通過輸入: ./filename 來執(zhí)行您的腳本。

      注釋

      在進行shell編程時,以#開頭的句子表示注釋,直到這一行的結(jié)束。我們真誠地建議您在程序中使用注釋。如果您使用了注釋,那么即使相當長的時間內(nèi)沒有使用該腳本,您也能在很短的時間內(nèi)明白該腳本的作用及工作原理。

      變量

      在其他編程語言中您必須使用變量。在shell編程中,所有的變量都由字符串組成,并且您不需要對變量進行聲明。要賦值給一個變量,您可以這樣寫:

      變量名=值

      取出變量值可以加一個美元符號($)在變量前面:

      #!/bin/sh
      #對變量賦值:
      a=”hello world”
      # 現(xiàn)在打印變量a的內(nèi)容:
      echo “A is:”
      echo $a

      在您的編輯器中輸入以上內(nèi)容,然后將其保存為一個文件first。之后執(zhí)行chmod +x first 使其可執(zhí)行,最后輸入./first執(zhí)行該腳本。
      這個腳本將會輸出:
      A is:
      hello world

      有時候變量名很容易與其他文字混淆,比如:

      num=2
      echo “this is the $numnd”

      這并不會打印出”this is the 2nd”,而僅僅打印”this is the “,因為shell會去搜索變量numnd的值,但是這個變量時沒有值的。可以使用花括號來告訴shell我們要打印的是num變量:

      num=2
      echo “this is the ${num}nd”

      這將打印: this is the 2nd

      有許多變量是系統(tǒng)自動設(shè)定的,這將在后面使用這些變量時進行討論。

      如果您需要處理數(shù)學(xué)表達式,那么您需要使用諸如expr等程序(見下面)。

      除了一般的僅在程序內(nèi)有效的shell變量以外,還有環(huán)境變量。由export關(guān)鍵字處理過的變量叫做環(huán)境變量。我們不對環(huán)境變量進行討論,因為通常情況下僅僅在登錄腳本中使用環(huán)境變量。

      Shell命令和流程控制

      在shell腳本中可以使用三類命令:

      1)Unix 命令:

      雖然在shell腳本中可以使用任意的unix命令,但是還是由一些相對更常用的命令。這些命令通常是用來進行文件和文字操作的。

      常用命令語法及功能

      echo “some text”: 將文字內(nèi)容打印在屏幕上

      ls: 文件列表

      wc -l filewc -w filewc -c file&: 計算文件行數(shù)計算文件中的單詞數(shù)計算文件中的字符數(shù)

      cp sourcefile destfile&: 文件拷貝

      mv oldname newname : 重命名文件或移動文件

      rm file&: 刪除文件

      grep ‘pattern’ file&: 在文件內(nèi)搜索字符串比如:grep ’searchstring’ file.txt

      cut -b colnum file&: 指定欲顯示的文件內(nèi)容范圍,并將它們輸出到標準輸出設(shè)備比如:輸出每行第5個到第9個字符cut -b5-9 file.txt千萬不要和cat命令混淆,這是兩個完全不同的命令

      cat file.txt: 輸出文件內(nèi)容到標準輸出設(shè)備(屏幕)上

      file somefile&: 得到文件類型

      read var: 提示用戶輸入,并將輸入賦值給變量

      sort file.txt: 對file.txt文件中的行進行排序

      uniq: 刪除文本文件中出現(xiàn)的行列比如: sort file.txt | uniq

      expr: 進行數(shù)學(xué)運算Example: add 2 and 3expr 2 “+” 3

      find: 搜索文件比如:根據(jù)文件名搜索find . -name filename -print

      tee: 將數(shù)據(jù)輸出到標準輸出設(shè)備(屏幕) 和文件比如:somecommand | tee outfile

      basename file&: 返回不包含路徑的文件名比如: basename /bin/tux將返回 tux

      dirname file&: 返回文件所在路徑比如:dirname /bin/tux將返回 /bin

      head file&: 打印文本文件開頭幾行

      tail file : 打印文本文件末尾幾行

      sed: Sed是一個基本的查找替換程序。可以從標準輸入(比如命令管道)讀入文本,并將結(jié)果輸出到標準輸出(屏幕)。該命令采用正則表達式(見參考)進行搜索。不要和shell中的通配符相混淆。比如:將linuxfocus 替換為 LinuxFocus :cat text.file | sed ’s/linuxfocus/LinuxFocus/’ > newtext.file

      awk: awk 用來從文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。cat file.txt | awk -F, ‘{print $1 “,” $3 }’這里我們使用,作為字段分割符,同時打印第一個和第三個字段。如果該文件內(nèi)容如下: Adam Bor, 34, IndiaKerry Miller, 22, USA命令輸出結(jié)果為:Adam Bor, IndiaKerry Miller, USA

      2) 概念: 管道, 重定向和 backtick

      這些不是系統(tǒng)命令,但是他們真的很重要。

      管道 (|) 將一個命令的輸出作為另外一個命令的輸入。
      grep “hello” file.txt | wc -l
      在file.txt中搜索包含有”hello”的行并計算其行數(shù)。
      在這里grep命令的輸出作為wc命令的輸入。當然您可以使用多個命令。

      重定向:將命令的結(jié)果輸出到文件,而不是標準輸出(屏幕)。
      > 寫入文件并覆蓋舊文件
      >> 加到文件的尾部,保留舊文件內(nèi)容。

      反短斜線
      使用反短斜線可以將一個命令的輸出作為另外一個命令的一個命令行參數(shù)。
      命令:
      find . -mtime -1 -type f -print
      用來查找過去24小時(-mtime -2則表示過去48小時)內(nèi)修改過的文件。如果您想將所有查找到的文件打一個包,則可以使用以下腳本:
      #!/bin/sh
      # The ticks are backticks (`) not normal quotes (’):
      tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`

      3) 流程控制

      ”if” 表達式 如果條件為真則執(zhí)行then后面的部分:
      if ….; then
        ….
      elif ….; then
        ….
      else
        ….
      fi
      大多數(shù)情況下,可以使用測試命令來對條件進行測試。比如可以比較字符串、判斷文件是否存在及是否可讀等等…
      通常用” [ ] “來表示條件測試。注意這里的空格很重要。要確保方括號的空格。
      [ -f “somefile” ] :判斷是否是一個文件
      [ -x “/bin/ls” ] :判斷/bin/ls是否存在并有可執(zhí)行權(quán)限
      [ -n “$var” ] :判斷$var變量是否有值
      [ “$a” = “$b” ] :判斷$a和$b是否相等

      執(zhí)行man test可以查看所有測試表達式可以比較和判斷的類型。
      直接執(zhí)行以下腳本:
      #!/bin/sh
      if [ “$SHELL” = “/bin/bash” ]; then
        echo “your login shell is the bash (bourne again shell)”
      else
        echo “your login shell is not bash but $SHELL”
      fi
      變量$SHELL包含了登錄shell的名稱,我們和/bin/bash進行了比較。

      快捷操作符

      熟悉C語言的朋友可能會很喜歡下面的表達式:

      [ -f “/etc/shadow” ] && echo “This computer uses shadow passwors”

      這里 && 就是一個快捷操作符,如果左邊的表達式為真則執(zhí)行右邊的語句。您也可以認為是邏輯運算中的與操作。上例中表示如果/etc/shadow文件存在則打印” This computer uses shadow passwors”。同樣或操作(||)在shell編程中也是可用的。這里有個例子:

    #!/bin/sh
    mailfolder=/var/spool/mail/james
    [ -r “$mailfolder” ]’ ‘{ echo “Can not read $mailfolder” exit 1; }
    echo “$mailfolder has mail from:”
    grep “^From ” $mailfolder

      該腳本首先判斷mailfolder是否可讀。如果可讀則打印該文件中的”From” 一行。如果不可讀則或操作生效,打印錯誤信息后腳本退出。這里有個問題,那就是我們必須有兩個命令:

      -打印錯誤信息
      -退出程序

      我們使用花括號以匿名函數(shù)的形式將兩個命令放到一起作為一個命令使用。一般函數(shù)將在下文提及。
      不用與和或操作符,我們也可以用if表達式作任何事情,但是使用與或操作符會更便利很多。

      case表達式可以用來匹配一個給定的字符串,而不是數(shù)字。

    case … in
    …) do something here
    esac

      讓我們看一個例子。 file命令可以辨別出一個給定文件的文件類型,比如:

    file lf.gz

      這將返回:

    lf.gz: gzip compressed data, deflated, original filename,
    last modified: Mon Aug 27 23:09:18 2001, os: Unix

    我們利用這一點寫了一個叫做smartzip的腳本,該腳本可以自動解壓bzip2, gzip 和zip 類型的壓縮文件:

    #!/bin/sh
    ftype=`file “$1″`
    case “$ftype” in
    “$1: Zip archive”*)
      unzip “$1″
    “$1: gzip compressed”*)
      gunzip “$1″
    “$1: bzip2 compressed”*)
      bunzip2 “$1″
    *) error “File $1 can not be uncompressed with smartzip”;;
    esac

      您可能注意到我們在這里使用了一個特殊的變量$1。該變量包含了傳遞給該程序的第一個參數(shù)值。也就是說,當我們運行:

    smartzip articles.zip
    $1 就是字符串 articles.zip

      select 表達式是一種bash的擴展應(yīng)用,尤其擅長于交互式使用。用戶可以從一組不同的值中進行選擇。

    select var in … do
     break
    done
    …. now $var can be used ….

    下面是一個例子:

    #!/bin/sh
    echo “What is your favourite OS?”
    select var in “Linux” “Gnu Hurd” “Free BSD” “Other”; do
        break
    done
    echo “You have selected $var”

    下面是該腳本運行的結(jié)果:

    What is your favourite OS?
    1) Linux
    2) Gnu Hurd
    3) Free BSD
    4) Other
    #? 1
    You have selected Linux

    您也可以在shell中使用如下的loop表達式:

    while …; do
    ….
    done

    while-loop 將運行直到表達式測試為真。will run while the expression that we test for is true. 關(guān)鍵字”break” 用來跳出循環(huán)。而關(guān)鍵字”continue”用來不執(zhí)行余下的部分而直接跳到下一個循環(huán)。

    for-loop表達式查看一個字符串列表 (字符串用空格分隔) 然后將其賦給一個變量:

    for var in ….; do
     ….
    done

    在下面的例子中,將分別打印ABC到屏幕上:

    #!/bin/sh
    for var in A B C do
     echo “var is $var”
    done

    下面是一個更為有用的腳本showrpm,其功能是打印一些RPM包的統(tǒng)計信息:

    #!/bin/sh
    # list a content summary of a number of RPM packages
    # USAGE: showrpm rpmfile1 rpmfile2 …
    # EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm
    for rpmpackage in $*; do
     if [ -r “$rpmpackage” ];then
      echo “=============== $rpmpackage ==============”
      rpm -qi -p $rpmpackage
     else
      echo “ERROR: cannot read file $rpmpackage”
     fi
    done

    這里出現(xiàn)了第二個特殊的變量$*,該變量包含了所有輸入的命令行參數(shù)值。如果您運行showrpm openssh.rpm w3m.rpm webgrep.rpm
    此時 $* 包含了 3 個字符串,即openssh.rpm, w3m.rpm and webgrep.rpm.

    引號

    在向程序傳遞任何參數(shù)之前,程序會擴展通配符和變量。這里所謂擴展的意思是程序會把通配符(比如*)替換成合適的文件名,它變量替換成變量值。為了防止程序作這種替換,您可以使用引號:讓我們來看一個例子,假設(shè)在當前目錄下有一些文件,兩個jpg文件, mail.jpg 和tux.jpg。

    #!/bin/sh
    echo *.jpg
    這將打印出”mail.jpg tux.jpg”的結(jié)果。
    引號 (單引號和雙引號) 將防止這種通配符擴展:
    #!/bin/sh
    echo “*.jpg”
    echo ‘*.jpg’
    這將打印”*.jpg” 兩次。

    單引號更嚴格一些。它可以防止任何變量擴展。雙引號可以防止通配符擴展但允許變量擴展。

    #!/bin/sh
    echo $SHELL
    echo “$SHELL”
    echo ‘$SHELL’

    運行結(jié)果為:
    /bin/bash
    /bin/bash
    $SHELL

    最后,還有一種防止這種擴展的方法,那就是使用轉(zhuǎn)義字符——反斜桿:

    echo *.jpg
    echo $SHELL
    這將輸出:
    *.jpg
    $SHELL
    Here document.

    當要將幾行文字傳遞給一個命令時,here document.(譯者注:目前還沒有見到過對該詞適合的翻譯)一種不錯的方法。對每個腳本寫一段幫助性的文字是很有用的,此時如果我們四有那個here document.就不必用echo函數(shù)一行行輸出。 一個 “Here document.quot; 以 << 開頭,后面接上一個字符串,這個字符串還必須出現(xiàn)在here document.末尾。下面是一個例子,在該例子中,我們對多個文件進行重命名,并且使用here document.打印幫助:

    #!/bin/sh
    # we have less than 3 arguments. Print the help text:
    if [ $# -lt 3 ] then
    cat < ren -- renames a number of files using sed regular expressions

    USAGE: ren 'regexp' 'replacement' files...

    EXAMPLE: rename all *.HTM files in *.html:
     ren 'HTM$' 'html' *.HTM

    HELP
     exit 0
    fi
    OLD="$1"
    NEW="$2"
    # The shift command removes one argument from the list of
    # command line arguments.
    shift
    shift
    # $* contains now all the files:
    for file in $*; do
      if [ -f "$file" ] then
       newfile=`echo "$file" | sed "s/${OLD}/${NEW}/g"`
       if [ -f "$newfile" ]; then
        echo "ERROR: $newfile exists already"
       else
        echo "renaming $file to $newfile ..."
        mv "$file" "$newfile"
       fi
      fi
    done

    這是一個復(fù)雜一些的例子。讓我們詳細討論一下。第一個if表達式判斷輸入命令行參數(shù)是否小于3個 (特殊變量$# 表示包含參數(shù)的個數(shù)) 。如果輸入?yún)?shù)小于3個,則將幫助文字傳遞給cat命令,然后由cat命令將其打印在屏幕上。打印幫助文字后程序退出。 如果輸入?yún)?shù)等于或大于3個,我們就將第一個參數(shù)賦值給變量OLD,第二個參數(shù)賦值給變量NEW。下一步,我們使用shift命令將第一個和第二個參數(shù)從參數(shù)列表中刪除,這樣原來的第三個參數(shù)就成為參數(shù)列表$*的第一個參數(shù)。然后我們開始循環(huán),命令行參數(shù)列表被一個接一個地被賦值給變量$file。接著我們判斷該文件是否存在,如果存在則通過sed命令搜索和替換來產(chǎn)生新的文件名。然后將反短斜線內(nèi)命令結(jié)果賦值給newfile。這樣我們就達到了我們的目的:得到了舊文件名和新文件名。然后使用mv命令進行重命名。

    函數(shù)

    如果您寫了一些稍微復(fù)雜一些的程序,您就會發(fā)現(xiàn)在程序中可能在幾個地方使用了相同的代碼,并且您也會發(fā)現(xiàn),如果我們使用了函數(shù),會方便很多。一個函數(shù)是這個樣子的:

    functionname()
    {
    # inside the body $1 is the first argument given to the function
    # $2 the second ...
    body
    }

    您需要在每個程序的開始對函數(shù)進行聲明。

    下面是一個叫做xtitlebar的腳本,使用這個腳本您可以改變終端窗口的名稱。這里使用了一個叫做help的函數(shù)。正如您可以看到的那樣,這個定義的函數(shù)被使用了兩次。

    #!/bin/sh
    # vim: set sw=4 ts=4 et:

    help()
    {
      cat < xtitlebar -- change the name of an xterm, gnome-terminal or kde konsole

    USAGE: xtitlebar [-h] "string_for_titelbar"

    OPTIONS: -h help text

    EXAMPLE: xtitlebar "cvs"

    HELP
      exit 0
    }

    # in case of error or if -h is given we call the function help:
    [ -z "$1" ] && help
    [ "$1" = "-h" ] && help

    # send the escape sequence to change the xterm titelbar:
    echo -e "33]0;$107"
    #

      在腳本中提供幫助是一種很好的編程習(xí)慣,這樣方便其他用戶(和您)使用和理解腳本。

      命令行參數(shù)

      我們已經(jīng)見過$* 和 $1, $2 ... $9 等特殊變量,這些特殊變量包含了用戶從命令行輸入的參數(shù)。迄今為止,我們僅僅了解了一些簡單的命令行語法(比如一些強制性的參數(shù)和查看幫助的-h選項)。但是在編寫更復(fù)雜的程序時,您可能會發(fā)現(xiàn)您需要更多的自定義的選項。通常的慣例是在所有可選的參數(shù)之前加一個減號,后面再加上參數(shù)值 (比如文件名)。

      有好多方法可以實現(xiàn)對輸入?yún)?shù)的分析,但是下面的使用case表達式的例子無遺是一個不錯的方法。

    #!/bin/sh
    help()
    {
     cat < This is a generic command line parser demo.
    USAGE EXAMPLE: cmdparser -l hello -f -- -somefile1 somefile2
    HELP
     exit 0
    }

    while [ -n "$1" ]; do
    case $1 in
      -h) help;shift 1;; # function help is called
      -f) opt_f=1;shift 1;; # variable opt_f is set
      -l) opt_l=$2;shift 2;; # -l takes an argument -> shift by 2
      –) shift;break;; # end of options
      -*) echo “error: no such option $1. -h for help”;exit 1;;
      *) break;;
    esac
    done

    echo “opt_f is $opt_f”
    echo “opt_l is $opt_l”
    echo “first arg is $1″
    echo “2nd arg is $2″

    您可以這樣運行該腳本:
    cmdparser -l hello -f — -somefile1 somefile2

    返回的結(jié)果是:
    opt_f is 1
    opt_l is hello
    first arg is -somefile1
    2nd arg is somefile2

      這個腳本是如何工作的呢?腳本首先在所有輸入命令行參數(shù)中進行循環(huán),將輸入?yún)?shù)與case表達式進行比較,如果匹配則設(shè)置一個變量并且移除該參數(shù)。根據(jù)unix系統(tǒng)的慣例,首先輸入的應(yīng)該是包含減號的參數(shù)。

      實例

      一般編程步驟

      現(xiàn)在我們來討論編寫一個腳本的一般步驟。任何優(yōu)秀的腳本都應(yīng)該具有幫助和輸入?yún)?shù)。并且寫一個偽腳本(framework.sh),該腳本包含了大多數(shù)腳本都需要的框架結(jié)構(gòu),是一個非常不錯的主意。這時候,在寫一個新的腳本時我們只需要執(zhí)行一下copy命令:
    cp framework.sh myscript
    然后再插入自己的函數(shù)。

      讓我們再看兩個例子:

      二進制到十進制的轉(zhuǎn)換

      腳本 b2d 將二進制數(shù) (比如 1101) 轉(zhuǎn)換為相應(yīng)的十進制數(shù)。這也是一個用expr命令進行數(shù)學(xué)運算的例子:

    #!/bin/sh
    # vim: set sw=4 ts=4 et:
    help()
    {
     cat < b2h — convert binary to decimal

    USAGE: b2h [-h] binarynum

    OPTIONS: -h help text

    EXAMPLE: b2h 111010
    will return 58
    HELP
     exit 0
    }

    error()
    {
      # print an error and exit
      echo “$1″
      exit 1
    }

    lastchar()
    {
      # return the last character of a string in $rval
      if [ -z “$1″ ]; then
        # empty string
        rval=”"
        return
      fi
      # wc puts some space behind the output this is why we need sed:
      numofchar=`echo -n “$1″ | wc -c | sed ’s/ //g’ `
      # now cut out the last char
      rval=`echo -n “$1″ | cut -b $numofchar`
    }

    chop()
    {
      # remove the last character in string and return it in $rval
      if [ -z “$1″ ]; then
        # empty string
        rval=”"
        return
      fi
      # wc puts some space behind the output this is why we need sed:
      numofchar=`echo -n “$1″ | wc -c | sed ’s/ //g’ `
      if [ “$numofchar” = “1″ ]; then
        # only one char in string
        rval=”"
        return
      fi
      numofcharminus1=`expr $numofchar “-” 1`
      # now cut all but the last char:
      rval=`echo -n “$1″ | cut -b 0-${numofcharminus1}`
    }

    while [ -n “$1″ ]; do
    case $1 in
      -h) help;shift 1;; # function help is called
      –) shift;break;; # end of options
      -*) error “error: no such option $1. -h for help”;;
      *) break;;
    esac
    done

    # The main program
    sum=0
    weight=1
    # one arg must be given:
    [ -z “$1″ ] && help
    binnum=”$1″
    binnumorig=”$1″

    while [ -n “$binnum” ]; do
      lastchar “$binnum”
      if [ “$rval” = “1″ ]; then
        sum=`expr “$weight” “+” “$sum”`
      fi
      # remove the last position in $binnum
      chop “$binnum”
      binnum=”$rval”
      weight=`expr “$weight” “*” 2`
    done

    echo “binary $binnumorig is decimal $sum”
    #
      該腳本使用的算法是利用十進制和二進制數(shù)權(quán)值 (1,2,4,8,16,..),比如二進制”10″可以這樣轉(zhuǎn)換成十進制:
      0 * 1 + 1 * 2 = 2
      為了得到單個的二進制數(shù)我們是用了lastchar 函數(shù)。該函數(shù)使用wc -c計算字符個數(shù),然后使用cut命令取出末尾一個字符。Chop函數(shù)的功能則是移除最后一個字符。

      文件循環(huán)程序
      或許您是想將所有發(fā)出的郵件保存到一個文件中的人們中的一員,但是在過了幾個月以后,這個文件可能會變得很大以至于使對該文件的訪問速度變慢。下面的腳本rotatefile 可以解決這個問題。這個腳本可以重命名郵件保存文件(假設(shè)為outmail)為outmail.1,而對于outmail.1就變成了outmail.2 等等等等…

    #!/bin/sh
    # vim: set sw=4 ts=4 et:
    ver=”0.1″
    help()
    {
      cat < rotatefile — rotate the file name

    USAGE: rotatefile [-h] filename

    OPTIONS: -h help text

    EXAMPLE: rotatefile out
    This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1
    and create an empty out-file

    The max number is 10

    version $ver
    HELP
      exit 0
    }

    error()
    {
      echo “$1″
      exit 1
    }
    while [ -n “$1″ ]; do
    case $1 in
      -h) help;shift 1;;
      –) break;;
      -*) echo “error: no such option $1. -h for help”;exit 1;;
      *) break;;
    esac
    done

    # input check:
    if [ -z “$1″ ] then
    error “ERROR: you must specify a file, use -h for help”
    fi
    filen=”$1″
    # rename any .1 , .2 etc file&:
    for n in 9 8 7 6 5 4 3 2 1; do
      if [ -f “$filen.$n” ]; then
        p=`expr $n + 1`
        echo “mv $filen.$n $filen.$p”
        mv $filen.$n $filen.$p
      fi
    done
    # rename the original file&:
    if [ -f “$filen” ]; then
      echo “mv $filen $filen.1″
      mv $filen $filen.1
    fi
    echo touch $filen
    touch $filen

      這個腳本是如何工作的呢?在檢測用戶提供了一個文件名以后,我們進行一個9到1的循環(huán)。文件9被命名為10,文件8重命名為9等等。循環(huán)完成之后,我們將原始文件命名為文件1同時建立一個與原始文件同名的空文件。

      調(diào)試

      最簡單的調(diào)試命令當然是使用echo命令。您可以使用echo在任何懷疑出錯的地方打印任何變量值。這也是絕大多數(shù)的shell程序員要花費80%的時間來調(diào)試程序的原因。Shell程序的好處在于不需要重新編譯,插入一個echo命令也不需要多少時間。

      shell也有一個真實的調(diào)試模式。如果在腳本”strangescript” 中有錯誤,您可以這樣來進行調(diào)試:
      sh -x strangescript
      這將執(zhí)行該腳本并顯示所有變量的值。
      shell還有一個不需要執(zhí)行腳本只是檢查語法的模式。可以這樣使用:
      sh -n your_script
      這將返回所有語法錯誤。
      我們希望您現(xiàn)在可以開始寫您自己的shell腳本,希望您玩得開心。

    摘錄于: http://www.wangchong.org/other/18.html

    ?

    ?

    總結(jié)

    以上是生活随笔為你收集整理的如何编写一个shell脚本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    日韩免费区 | 中文字幕日韩精品有码视频 | 日本久久精品 | 欧美色图东方 | 在线国产激情视频 | 国产一级片直播 | 一级黄色毛片 | 日韩视频在线不卡 | 网站在线观看日韩 | 久久久精品影视 | 色黄www小说 | av成人免费网站 | 日韩中文字| 国产美女免费 | 三级av免费观看 | 九九在线视频免费观看 | 欧美日韩在线电影 | 日韩二区三区 | www.夜夜操.com| 97人人添人澡人人爽超碰动图 | 欧美日韩国产在线精品 | 精品久久久久亚洲 | 国产不卡精品视频 | www.香蕉视频在线观看 | 久久只有精品 | 玖玖视频精品 | 天堂va欧美va亚洲va老司机 | 精品国产_亚洲人成在线 | 天天夜夜亚洲 | 亚洲国产成人在线观看 | 91在线免费视频观看 | 久久久国产精品电影 | 精品国产欧美一区二区 | 日本公妇在线观看高清 | 久久国产欧美日韩 | 五月开心六月伊人色婷婷 | 欧美日韩国产亚洲乱码字幕 | 亚洲精品高清在线观看 | 日本不卡123区 | 国产在线精品国自产拍影院 | 九九视频这里只有精品 | 日韩天天综合 | 国产精品久久久久久久久久久久久 | 欧美看片 | 中文字幕精品一区二区三区电影 | 美女视频黄是免费的 | 四季av综合网站 | 精品久久久久久久久久 | 国产日韩精品一区二区三区 | 日产乱码一二三区别在线 | 麻豆 videos | 欧美日韩免费在线视频 | 亚洲欧美日韩一二三区 | 国际av在线 | 国产99一区| 中文字幕在线观看2018 | 午夜国产福利视频 | 人人要人人澡人人爽人人dvd | 二区三区中文字幕 | 黄色一级大片在线免费看国产一 | 六月久久婷婷 | 国产精品乱码一区二三区 | 狠狠狠狠狠狠天天爱 | 在线黄网站 | 免费视频成人 | 在线视频精品播放 | 亚洲欧美成人在线 | 一区二区视频在线看 | 久久久精品网 | 欧美一区二区三区特黄 | 国产精品1000| 久久精品一二区 | 天天综合成人 | 97碰碰视频| 视频高清 | 超碰在线99| 国产视频中文字幕在线观看 | 日韩免费中文 | 日韩中文字幕免费 | 国产精品久久久久久久免费 | av中文字幕电影 | www.com.日本一级 | 日韩久久一区二区 | 亚洲精品小区久久久久久 | 亚洲欧美婷婷六月色综合 | 精品视频久久久 | 天天做天天爱夜夜爽 | 69精品视频 | 97网| 亚洲黄色av | 色激情五月 | 黄色小视频在线观看免费 | 香蕉视频导航 | 国产精品久久久久久999 | 国产精品日韩久久久久 | 91热视频在线观看 | zzijzzij亚洲日本少妇熟睡 | 免费久久99精品国产 | 97免费在线视频 | 亚洲精品ww| 超碰人人在线观看 | 日韩av区| 欧美精品国产综合久久 | 亚洲一级二级 | 免费av在线网站 | 青青草国产在线 | 久久综合免费视频影院 | 国产精品久久久久久久久久久久午夜 | 四虎国产精品免费观看视频优播 | 天天操天天射天天爱 | 深爱五月激情五月 | 久久精品视频网 | 狠狠狠色丁香婷婷综合激情 | av观看网站| 69视频网站 | 久久精品导航 | 久久99最新地址 | 久久精品视频中文字幕 | 日韩欧美极品 | 中文字幕一区二区三区视频 | 丁香花中文字幕 | 综合久久精品 | 日韩免费| 国产啊v在线观看 | 午夜视频在线观看一区 | 亚洲国产日韩在线 | 97天堂 | 婷婷丁香视频 | 亚洲成人av在线播放 | 91精品推荐 | 玖草在线观看 | 在线观看国产 | 视频一区二区免费 | 亚洲在线视频观看 | 免费91在线 | 国产精品一区久久久久 | 男女啪啪免费网站 | 三级在线播放视频 | 久久婷婷国产色一区二区三区 | 国产美女久久久 | 欧美另类69 | 国产天天爽 | 色综合久久久久综合 | 人人插人人爱 | 在线观看日韩av | 四虎成人在线 | 色999精品 | 中文字幕 影院 | 91av视频在线观看 | 91丨九色丨国产在线 | 最近中文字幕 | 一区 在线观看 | 日躁夜躁狠狠躁2001 | 国产免费午夜 | 久久久受www免费人成 | 国产精品久久久久久久久久免费看 | 成年人在线免费看视频 | 91综合久久一区二区 | 国产手机在线播放 | 天堂在线免费视频 | 三上悠亚在线免费 | 国产激情久久久 | 99久久精品免费看国产 | 国产精品久久久av久久久 | 一区二区三区在线观看免费视频 | 色噜噜日韩精品一区二区三区视频 | 成片免费观看视频999 | 99视频一区二区 | 免费黄色a级毛片 | 亚洲日本一区二区在线 | 99久久精品午夜一区二区小说 | www.亚洲精品视频 | 日韩区欠美精品av视频 | 在线国产小视频 | 五月天婷亚洲天综合网鲁鲁鲁 | 久久精品1区 | 久久人人添人人爽添人人88v | 国产亚洲精品久久久久久久久久 | 国产成人精品亚洲a | 国产亚洲精品福利 | 一区二区欧美在线观看 | 日韩av高清| 国产麻豆视频 | 久久免费公开视频 | 看污网站| 天堂在线视频免费观看 | 国产91在线观看 | 天天爱天天射 | 亚洲午夜久久久久久久久 | 亚洲九九九 | 国产精品专区在线 | 免费aa大片 | 亚洲欧美国产日韩在线观看 | 国产精品美女久久久久久久 | 国产视频精选 | 夜夜干夜夜 | 日韩视频在线一区 | 欧美精品在线观看免费 | 中文十次啦 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 午夜精品久久久久久中宇69 | 亚洲精品色婷婷 | 久久精品看 | 午夜av色 | 国产精品乱码一区二区视频 | 日本bbbb摸bbbb| 免费日韩一区 | 国产在线观看一区 | 久久婷婷激情 | 四虎小视频 | 日韩天堂在线观看 | 91理论片午午伦夜理片久久 | 亚洲精品久 | 日韩av电影中文字幕在线观看 | av片在线看 | 国产手机在线精品 | 久久99国产精品免费 | 三级黄色在线 | 草久电影 | 成人少妇影院yyyy | 深爱激情av | 色婷婷a | 久久999久久 | 天天操天天拍 | 日本久久电影 | 波多野结衣网址 | a成人v在线 | 日韩素人在线观看 | 看片一区二区三区 | 久久99视频免费 | 国产精品视频999 | 九九综合九九综合 | 国产一级视频在线 | 日韩一级电影在线观看 | 伊香蕉大综综综合久久啪 | caobi视频 | 91视频传媒 | 欧美成人aa | 亚洲aⅴ久久精品 | 日本久久久久久 | 成人小视频免费在线观看 | 欧美精品久久久久久久久久丰满 | 免费亚洲视频在线观看 | 日韩av电影一区 | 天堂av色婷婷一区二区三区 | a√天堂资源 | 1024手机看片国产 | 日韩av不卡在线播放 | 中国一级特黄毛片大片久久 | 久久久久久美女 | 黄色成人小视频 | 99久久夜色精品国产亚洲96 | 黄色一级大片在线免费看产 | 久久久精品一区二区 | 日韩av有码在线 | 天天色天天操天天爽 | www.综合网.com | 四虎国产精品永久在线国在线 | 欧美极品xxxx | 国产黄色精品 | 日韩大片在线播放 | 久久久精品国产一区二区电影四季 | 人人澡人人爽欧一区 | 国产黄色在线看 | 久久久在线免费观看 | 欧美性免费 | 日本公妇在线观看高清 | 日日夜夜干| 国产成人av福利 | 99九九热只有国产精品 | 成av在线| 国产黄免费在线观看 | 欧美-第1页-屁屁影院 | 欧美va天堂va视频va在线 | 欧美美女视频在线观看 | 久久99九九99精品 | 国产亚洲精品中文字幕 | 午夜精品一区二区三区四区 | 99精品国产成人一区二区 | 六月丁香六月婷婷 | 成人在线你懂得 | 久久精品视频观看 | 久久国产精品成人免费浪潮 | 色婷婷综合激情 | 91综合久久一区二区 | 91精品第一页 | 国产高清绿奴videos | 国内精品久久久久久久久久清纯 | 精品在线小视频 | 99精品成人| 欧美色综合天天久久综合精品 | 国产 日韩 在线 亚洲 字幕 中文 | 91成人免费看片 | 亚洲成aⅴ人在线观看 | 成人av在线播放网站 | 天天操天天爽天天干 | 中文字幕中文字幕在线一区 | 国内偷拍精品视频 | 国产精品免费观看视频 | 成人黄色小视频 | 91视频免费看网站 | 久久久蜜桃一区二区 | 天天干夜夜干 | 亚洲激情av | 在线观看免费视频 | 伊人婷婷在线 | 久久精品一区二区三区四区 | 中文字幕精品www乱入免费视频 | 国产精品理论片 | 欧美精品一级视频 | 久久精久久精 | 久久久久区 | 三级视频日韩 | 久久99精品国产99久久 | 蜜臀久久99精品久久久无需会员 | 中文字幕视频网站 | 日本性视频 | 婷婷九月激情 | 嫩草91影院 | 人人揉人人揉人人揉人人揉97 | 中文字幕资源网在线观看 | 91网在线看 | 欧美激情一区不卡 | 亚洲一区二区视频在线播放 | 视频在线观看91 | 亚州视频在线 | 狠狠婷婷| 色亚洲激情| 国产97碰免费视频 | 国产精品久久久久毛片大屁完整版 | av高清在线 | 天天射天天干天天插 | 视频国产一区二区三区 | 国产成人精品久久二区二区 | 中文字幕一区二区在线观看 | 激情五月开心 | 99热手机在线 | 国产精品久久久久久欧美 | 99久久精品免费看国产一区二区三区 | 五月天久久久久久 | 日本中文字幕视频 | 免费观看性生交大片3 | av国产在线观看 | 亚洲国产片 | 四虎国产精品成人免费影视 | 国产一级视频在线 | 五月色丁香 | 深夜男人影院 | 狠狠色噜噜狠狠狠狠2021天天 | av 一区二区三区四区 | 免费看久久久 | 色偷偷88888欧美精品久久久 | 久久精品网 | 久久高视频 | 亚洲视频免费在线观看 | a视频免费| 久久久久久久久久久久久久av | 91精品小视频 | 亚洲一区二区视频在线 | 国产高清在线免费视频 | 日韩 精品 一区 国产 麻豆 | 亚洲天堂网视频 | 啪啪免费试看 | 伊人伊成久久人综合网小说 | 伊人色综合久久天天网 | 五月天亚洲综合 | 免费亚洲精品 | 亚洲视频2| 伊人五月天综合 | 性色av免费在线观看 | 国产日韩中文字幕 | av片中文| 91视频 - x99av| 激情婷婷在线 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 国产精品99精品久久免费 | 国产成人精品a | 九九久 | 日韩免费高清在线 | 亚洲欧美综合精品久久成人 | 久久免费99精品久久久久久 | 天天爱综合 | 天天综合网国产 | 欧美在线视频不卡 | 日韩欧美视频一区二区 | 五月婷婷在线观看视频 | 色99之美女主播在线视频 | 激情久久伊人 | av免费网页| 日韩伦理片hd | 在线视频99 | 久久久久久久久久网站 | 国产精华国产精品 | 香蕉视频导航 | 成年人在线免费视频观看 | 久久久国产日韩 | 五月综合网站 | 国模吧一区 | 国产成人一区二区三区电影 | 蜜臀久久99精品久久久酒店新书 | 国产一级高清 | 综合婷婷丁香 | 日日爱av | 九九免费精品视频在线观看 | 国产香蕉久久 | 久久久久国产免费免费 | 国产精品女主播一区二区三区 | 国产精品一区二区三区免费看 | 视频在线观看一区 | 免费看毛片在线 | 四虎国产精品永久在线国在线 | 亚洲天天草 | 国产精品乱码一区二三区 | av无限看 | 日韩黄色一级电影 | 麻豆影视在线播放 | 免费观看黄色12片一级视频 | 国产香蕉久久精品综合网 | 色狠狠久久av五月综合 | 九九久 | 亚洲成人黄色av | 精品产品国产在线不卡 | 中文字幕在线观看日本 | 欧美经典久久 | 国产成人一区二区三区在线观看 | 国产一级免费电影 | 激情偷乱人伦小说视频在线观看 | 色在线网站 | 国产精品综合久久久久 | 国产在线污 | 欧美激情第28页 | 69视频永久免费观看 | 日韩中文字幕国产精品 | 91专区在线观看 | 欧美另类v | 天天操夜夜看 | 中文字幕在线看视频国产中文版 | 亚洲专区路线二 | 国产粉嫩在线 | 蜜桃麻豆www久久囤产精品 | 福利视频导航网址 | 亚洲精品午夜视频 | 免费观看完整版无人区 | 亚洲精选在线观看 | 在线观看中文字幕dvd播放 | 日韩免费大片 | 亚洲精品视频一 | 天天射天天干天天操 | 国产三级精品在线 | 国产乱对白刺激视频在线观看女王 | 中文一二区 | 色就是色综合 | 日韩在线首页 | 日黄网站 | 521色香蕉网站在线观看 | av7777777| 天天玩夜夜操 | 欧美少妇xxx | 亚洲精品国内 | 国产专区第一页 | 免费看污网站 | 99国产精品免费网站 | 日本色小说视频 | 国产日韩欧美综合在线 | 久久精品亚洲综合专区 | 亚洲精品美女久久久 | 国产精品亚洲视频 | 色综合天天综合网国产成人网 | 成人黄色片免费 | av免费线看| 男女拍拍免费视频 | 国产精品毛片久久蜜 | 精品免费久久久久久 | 久久久久99精品国产片 | 久久影院一区 | 久久久久久久久久免费视频 | 亚洲五月综合 | 一级一片免费看 | 九九九在线观看视频 | 成人在线一区二区三区 | 日韩精品一区二区在线视频 | 日日插日日干 | 久久综合偷偷噜噜噜色 | 在线视频一二三 | 天天干天天综合 | jizz欧美性9 国产一区高清在线观看 | 免费成人短视频 | 亚洲国产资源 | 超碰成人免费电影 | 探花视频免费观看 | 成人在线中文字幕 | 久久久久久久久综合 | 欧美一区二区三区免费观看 | 337p日本大胆噜噜噜噜 | av福利超碰网站 | 久久电影国产免费久久电影 | 日韩欧美视频在线播放 | 中文字幕丰满人伦在线 | 美女免费av| jizz999 | 国产精品综合av一区二区国产馆 | 草久在线观看 | 四月婷婷在线观看 | 国产一区成人 | 日本久久久亚洲精品 | 69国产盗摄一区二区三区五区 | 99久久精品免费看国产免费软件 | 国产精品久久久久亚洲影视 | 一区二区三区手机在线观看 | av噜噜噜在线播放 | 我要看黄色一级片 | 亚洲电影自拍 | 五月天婷婷视频 | 欧美激情第十页 | 亚洲乱码精品久久久久 | 久久精品网站免费观看 | 精品国产乱码 | 欧美精品色 | 国产高清在线免费 | 欧美成人精品欧美一级乱黄 | 美女网站视频免费黄 | 免费av小说 | 久久综合色播五月 | 免费视频久久 | 久久精品欧美日韩精品 | 国产精品大尺度 | 91精品国产91p65 | 波多野结衣在线视频一区 | 欧美大片在线观看一区 | 亚洲一级片免费观看 | 婷婷久久一区 | 午夜在线看片 | 亚洲精品国产综合99久久夜夜嗨 | 国产在线欧美日韩 | 亚州精品国产 | 国产女教师精品久久av | 午夜精品一区二区三区在线播放 | 久久精品国产99 | 免费在线激情电影 | 特黄特黄的视频 | 亚洲另类视频 | 亚洲伊人婷婷 | 曰本三级在线 | 99精品在线视频播放 | 国产又粗又猛又爽又黄的视频免费 | 国产成人一区二区三区在线观看 | 黄色成人小视频 | 国产精品久久久久久久妇 | 中文在线字幕观看电影 | 99在线精品免费视频九九视 | 日日日干 | 一区二区三区四区在线 | 亚洲欧洲国产精品 | 国产精品igao视频网网址 | 欧美另类交在线观看 | 99精品欧美一区二区三区黑人哦 | 中文字幕高清在线播放 | 精品免费观看视频 | 激情丁香久久 | 天堂av免费 | 超碰在线色 | 97电影手机版 | 久久久久久久久久福利 | 手机在线免费av | 九草视频在线观看 | 日韩精品一区二区三区在线视频 | 色狠狠狠| 黄网站色欧美视频 | 国产精品久久久久久av | 国产高清不卡一区二区三区 | 超级碰碰碰免费视频 | 久久人人97超碰com | 91在线操 | 中文字幕二区三区 | 天海冀一区二区三区 | 超碰在线成人 | 六月丁香六月婷婷 | 久久精品牌麻豆国产大山 | 狠狠躁18三区二区一区ai明星 | 91人网站 | 中文字幕成人av | 在线观看免费高清视频大全追剧 | 欧美一级黄大片 | 久久www免费人成看片高清 | 日韩1页| 久久99免费 | 中文字幕免费高清在线 | 欧美日韩另类在线观看 | 亚洲va男人天堂 | 久久精品国产一区 | 天天操综合 | 美女视频是黄的免费观看 | 国产视频中文字幕 | 国产成人精品一区在线 | 在线亚洲人成电影网站色www | 亚洲 欧洲av| 免费a视频在线观看 | 亚洲三级国产 | 欧美激情综合五月色丁香 | 中文字幕精品一区二区精品 | 国产99爱| 国产69熟 | 欧美性生交大片免网 | 久久精品中文视频 | 亚洲精品国产片 | 久久久久久久久久久久国产精品 | 成人啊 v| 国产精品中文字幕在线观看 | 在线观看视频一区二区三区 | 亚洲男男gaygayxxxgv | 国产精品原创 | 久久久高清视频 | 国产日产高清dvd碟片 | 欧美另类高清 | 久久久香蕉视频 | 欧美综合色在线图区 | 色av婷婷| 91豆花在线观看 | 在线观看国产成人av片 | 欧美韩国日本在线观看 | 国产精品久久久毛片 | 久久久电影 | 97国产大学生情侣白嫩酒店 | 久久久久久久久久电影 | 香蕉免费在线 | 欧美精品中文 | 福利视频导航网址 | 午夜视频色| 黄色a在线| 亚洲自拍自偷 | 精品一二三区视频 | 亚洲激情视频在线 | 国产毛片久久久 | 999国内精品永久免费视频 | 奇米影视999| 成全在线视频免费观看 | 精品视频123区在线观看 | 操高跟美女 | 五月婷婷中文字幕 | 久久成人亚洲欧美电影 | a级国产乱理论片在线观看 特级毛片在线观看 | 久久人人爽视频 | 成人黄色电影在线播放 | 狠狠躁夜夜av | 日日干激情五月 | 在线国产能看的 | 欧美日韩大片在线观看 | 亚洲欧美日韩国产 | 国产手机精品视频 | 免费看的黄色 | a久久久久 | 91中文字幕网 | 日本一区二区高清不卡 | 97网| 中文字幕一区在线观看视频 | a极黄色片 | 亚洲欧美日韩国产 | 久久久色| 亚洲成人黄色在线观看 | 丁香花中文字幕 | 高清视频一区二区三区 | 国产在线观看一区 | 中文综合在线 | 亚洲国产精品久久久久婷婷884 | 国产五月色婷婷六月丁香视频 | 国产成人高清在线 | 人人超碰97| 免费看片网页 | 久久综合久久八八 | 天天干天天干天天干天天干天天干天天干 | 午夜视频免费 | 亚洲欧洲国产日韩精品 | 久久精品视频在线播放 | 国产高清黄 | 五月天婷婷丁香花 | 成人久久免费视频 | 午夜久久美女 | 国产手机在线播放 | 国际精品久久久 | 天堂av免费看| 最新av在线免费观看 | 最近中文字幕视频完整版 | 97免费公开视频 | 国产最顶级的黄色片在线免费观看 | 久久久久久久久久久网 | 6080yy精品一区二区三区 | 久草视频免费在线播放 | 99精品偷拍视频一区二区三区 | 久草在线免费新视频 | 中文视频在线播放 | 日韩精品综合在线 | 久久人人97超碰com | 久久免费大片 | 国产精品久久久久久久久久免费看 | 天天色天天操综合 | 黄色毛片在线观看 | 久久av一区二区三区亚洲 | 日韩一区二区免费视频 | www.五月天激情 | 丁香婷婷成人 | 九九久久国产精品 | 在线超碰av| 亚洲一级二级三级 | 精品国产一二三 | 亚洲成人黄 | 欧美成年人在线视频 | 日韩在线免费小视频 | 欧美午夜性生活 | 国产成人精品女人久久久 | 97超碰精品 | 亚洲激情五月 | 久久免费一级片 | 日韩伦理片hd | 中文字幕在线观看一区二区 | a午夜电影 | 亚洲黄色成人 | 国产精品视频免费看 | 中文字幕永久免费 | a午夜电影 | 精品国产一区二区在线 | 日韩免费播放 | 一级国产视频 | 亚洲精品乱码久久久久久写真 | 日本aaaa级毛片在线看 | www.色在线| 久久久伊人网 | 日本精品一 | 中文字幕在线免费看线人 | 成人动态视频 | 免费看国产视频 | 久久精彩免费视频 | 日韩高清精品一区二区 | 国产综合香蕉五月婷在线 | 91在线你懂的 | 精品视频久久久久久 | 在线观看视频精品 | 欧美一二三视频 | 精品久久九九 | 欧美性春潮 | 成人动图| 亚洲综合色视频在线观看 | 国产综合片 | 激情网色 | 日韩精品一区二区三区第95 | 蜜臀av网址 | 国产又黄又硬又爽 | 91在线一区二区 | 久久人人爽人人爽 | 日本黄色免费在线观看 | 99re中文字幕| 日韩在线视频免费观看 | 国模精品一区二区三区 | 色多多视频在线 | 久久草精品 | 色com网| 婷婷国产在线 | 在线国产能看的 | 久久精品视频一 | 奇米影音四色 | 免费精品国产 | 97国产超碰在线 | 黄色tv视频| 国产精品字幕 | 国产专区视频在线观看 | 国产爽视频 | 久久综合99 | 超碰在线cao | 日本久久久久久久久久 | 成av人电影 | 亚洲日本va午夜在线影院 | 正在播放亚洲精品 | 91资源在线播放 | 欧美日韩一区二区三区免费视频 | 日韩欧美视频免费在线观看 | 三级性生活视频 | 在线成人短视频 | 国产日韩视频在线 | 日韩视频欧美视频 | 久久免费视频在线观看30 | 超碰com| 色妞久久福利网 | av在线播放免费 | 亚洲夜夜综合 | 91黄色免费看| 亚洲天堂网在线观看视频 | 免费日韩av片 | 波多野结衣电影一区二区 | 国产一级二级av | 久久69精品久久久久久久电影好 | 国产成人精品一区二区三区免费 | 又黄又爽又无遮挡免费的网站 | 中文字幕久久精品亚洲乱码 | 久热av在线 | 欧美日韩国产一区 | 五月天免费网站 | 精品久久福利 | 精品五月天 | 中文字幕黄色网址 | 一区二区电影在线观看 | 亚洲第一av在线播放 | 黄色一区二区在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 欧美午夜精品久久久久久浪潮 | 国产男男gay做爰 | 精品91久久久久 | 蜜桃av人人夜夜澡人人爽 | 五月婷婷在线视频观看 | 日韩电影一区二区在线观看 | 亚洲精品一区二区三区新线路 | 丁香视频全集免费观看 | 国产精品mv| 国产美女精品在线 | 97精品国产一二三产区 | 91av蜜桃 | 色婷婷久久一区二区 | 麻豆免费精品视频 | 色综合天天狠狠 | 国产精品高清在线观看 | 久久精品一级片 | 超碰97在线资源 | 特级黄色视频毛片 | 少妇bbb搡bbbb搡bbbb′ | 狠狠干中文字幕 | 国外成人在线视频网站 | 91桃色免费观看 | 久久乐九色婷婷综合色狠狠182 | 国产一级精品视频 | 精品国产中文字幕 | 99视频精品| 欧美成人精品在线 | 特级西西www44高清大胆图片 | 99视频在线观看一区三区 | 蜜臀av夜夜澡人人爽人人 | 五月天天色 | ww视频在线观看 | 特级黄色视频毛片 | 激情在线网站 | 色综合久久中文字幕综合网 | 伊人婷婷在线 | 午夜国产福利在线 | 成人av中文字幕在线观看 | 丰满少妇在线 | 成人午夜精品 | 国产一区二区手机在线观看 | 日本色小说视频 | 激情电影在线观看 | 精品国产视频在线 | 黄色1级大片 | 国产美女精品在线 | 国产午夜精品一区二区三区嫩草 | 日韩理论片在线 | 深爱婷婷激情 | 精品一二三四在线 | 国产成人精品女人久久久 | 午夜日b视频 | 天堂av一区二区 | 麻豆国产精品永久免费视频 | 久久久久久久久久久网站 | av免费看在线 | 成人免费观看完整版电影 | 天天操天天色天天射 | 久久精品—区二区三区 | 亚洲综合精品视频 | 亚洲 欧美 精品 | 色偷偷人人澡久久超碰69 | 日韩综合一区二区 | 伊人婷婷网 | 久久久久免费观看 | 成人h视频 | 欧美少妇xxx | 亚洲精品日韩一区二区电影 | 丁香电影小说免费视频观看 | 婷婷色网站 | 国产精品18久久久久久久网站 | 精品一区二区影视 | 久草在线视频网 | 国产美女网站在线观看 | 操操操av | 久久精国产 | 欧美天天综合网 | 成人黄色电影在线观看 | 九九热在线视频免费观看 | 精品在线小视频 | 精品高清视频 | 精品在线观 | bbb搡bbb爽爽爽 | 96精品高清视频在线观看软件特色 | 黄色官网在线观看 | 美女在线国产 | 99热这里只有精品8 久久综合毛片 | 精品一区二区精品 | av观看久久久 | 婷婷在线精品视频 | 91精品对白一区国产伦 | 久久久久 免费视频 | 久久99精品久久久久蜜臀 | 狠狠色免费 | 天天天操天天天干 | 亚洲三级在线免费观看 | 国产日韩欧美精品在线观看 | 亚洲成年人免费网站 | 激情偷乱人伦小说视频在线观看 | 一区二区在线电影 | 免费av看片 | 久久久999精品视频 国产美女免费观看 | 日韩三级一区 | 国产精品久久久久久影院 | 超碰人人在线观看 | 国产无套精品久久久久久 | 日日麻批40分钟视频免费观看 | 日韩两性视频 | 国产亚洲精品久久久网站好莱 | 成人app在线免费观看 | 精品视频亚洲 | av黄色国产| 国产精选视频 | 国产一区二区在线影院 | 韩国av永久免费 | 色综合激情久久 | 二区中文字幕 | h视频在线看 | 五月婷婷黄色 | 黄色三级久久 | 日韩精品在线免费播放 | 久久久精品小视频 | 日韩免费视频 | 国产一区二区视频在线播放 | 亚洲综合视频在线 | 天天操·夜夜操 | 亚洲电影av在线 | 丝袜av网站 | 夜夜爽天天爽 | 99国产精品 | 亚洲乱亚洲乱妇 | 青青河边草观看完整版高清 | 国产成人亚洲在线观看 | 国产一级视频在线观看 | 国内丰满少妇猛烈精品播放 | 中文字幕在线有码 | 日本中文字幕在线一区 | 伊人五月综合 | 亚洲激情综合网 | 人人插人人舔 | 日韩在线观看视频在线 | 狠狠操操| 久久中文网 | 色偷偷88欧美精品久久久 | 国产手机视频精品 | 国产自在线 | 国产精品永久免费观看 | 视频一区二区三区视频 | 91综合色| 中文字幕亚洲精品在线观看 | 国产精品剧情在线亚洲 | 日韩二区精品 | 中文字幕一区二区在线观看 | 五月综合激情 | 日本黄区免费视频观看 | 福利视频网址 | 91中文字幕永久在线 | 在线中文字幕网站 | 亚洲国产精品小视频 | 国产日本亚洲 | 高清在线观看av | 久久国产精品一二三区 | 亚洲成av片人久久久 | 一区二区视频在线观看免费 | 日韩精品中文字幕久久臀 | 亚洲欧美日韩一区二区三区在线观看 | av中文字幕第一页 | 久久精彩视频 | 99视频在线播放 | 国产一级淫片免费看 | 色综合网在线 | 国产区欧美 | 在线观看免费福利 | 日韩av一区二区三区四区 | 精品国产一区在线观看 | 日韩欧美视频免费观看 | 国产精品综合久久久久久 | www亚洲国产 | 日韩在线观看av | 97视频免费观看 | 手机av电影在线 | 在线成人观看 | 97天天综合网 | 九九视频在线观看视频6 | 91大神精品视频在线观看 | 亚洲区视频在线 | 欧美一区二区三区在线播放 | 国产蜜臀av | 麻豆国产电影 | 又黄又刺激的视频 | 激情伊人五月天久久综合 | 综合在线色 | 国产精品 美女 | 99久久精品午夜一区二区小说 | 亚州av免费|