(linux shell)第一章--小試牛刀(下)

來源:互聯網
上載者:User

標籤:linux shell 基礎

文章來源: (linux shell)第一章--小試牛刀(下)


1.6 數組和關聯陣列

    1.6.1 預備知識

        Bash同時支援普通數組和關聯陣列,普通數組只能使用整數作為數組索引,而關聯陣列可以使用字串作為數組索引。關聯陣列在很多操作中相當有用。

    1.6.2 實戰演練

        定義數組的方法有很多,可以在單行中使用一列值來定義一個數組:

        array_var=(1,2,3,4,5,6)   #這些值將會儲存在以0為起始索引的連續位置上

        另外,還可以將數組定義成一組索引-值:

        array_var[0]="test1"

        array_var[1]="test2"


        列印出特定數組元素的內容:

        echo ${array_var[0]}

        以清單形式列印出數組中的所有值:

        echo ${array_var[*]}

        列印數組長度

        echo ${#array_var[*]}


1.7 使用別名

    1.7.1 預備知識

        別名有多種便捷方式,可以使用函數,也可以使用alias命令

    1.7.2 實戰演練

        alias new_command=‘command sequence‘

        alias install=‘sudo apt-get install‘

        當然,這樣修改的別名只是暫時的,只對當前終端有效,如果想一直保持作用,可將它放入~/.bashrc中


1.8 擷取終端資訊

    1.8.1 預備只是

        tput和stty是兩款終端處理工具。

    1.8.2 實戰演練

        擷取終端的行數和列數

        tput cols

        tpu lines

        

        列印出當前終端名稱:

        tput longname

        將游標移動到方位(100,100)處

        tput cup 100 100

        設定終端背景色

        tput setb no(0--7)

        設定文本樣式為粗體:

        tput bold

        刪除當前游標到行尾的所有內容:

        tput ed

        

        使用stty -echo 可以隱藏使用者輸入的內容


1.9 擷取設定日期和延時

    1.9.1 實戰演練

        讀取日期:  

        date

        列印紀元時

        date +%s

        選項--date用於提供日期串作為輸入。但我們可以使用任意的日期格式化選項來列印輸出。將日期串作為輸入能夠過用來獲知給定的日期是星期幾

        date --date ‘Jan 20 2011‘ +%A

        

        可以按照你的選擇列印出日期格式:

        date "+%d %B %Y"

               

        時間的延時可以用sleep sec命令


1.10  函數和參數

    1.10.1  實戰演練

        定義函數:

        function fname() {

            statements;

        }       

        或者fname(){statments}

        只需要使用某個函數名就可以調用函數:

        fname

        調用函數傳遞參數:

        fname arg1 arg2

        以下是函數讀取參數的文法:

        fname() {

            echo $1,$2   #訪問參數1和參數2

            echo "[email protected]"    #以列表的方式一次列印所有的參數,即"$1" "$2" "$3"

            echo "$*"      #類似於[email protected],但是參數被作為單個實體,即"$1c$2c$3",c是IFS的一個字元

        }


1.11 比較與測試

    ?1.11.1 預備知識

    ?    ?我們可以用if,if else以及邏輯運算子來執行測試,而用一些比較子來比較資料項目。另外一個test命令也可以用來測試。

    ?1.11.2 實戰演練

    ?    ?if condition; then

    ?    ?    ?commands;

    ?    ?fi

    ?    ?算數比較

    ?    ?條件通常被放置在中括弧內,一定要注意在[或]與運算元之間有一個空格。如果忘記了這個空格,指令碼就會報錯。例如:

    ?    ?[ $var -eq 0 ] or [ $var -eq 1 ]

    ?    ?其它一些重要的操作符有:

    ?    ?    ?-gt:  大於

    ?    ?    ?-lt:  小於

    ?    ?    ?-ge:  大於或等於

    ?    ?    ?-le:  小於或等於

    ?    ?可以按照下面的方法結合多個條件進行測試

    ?    ?[ $var -ne 0 -a $var2 -gt 2 ]   #邏輯與 -a

    ?    ?[ $var -ne 0 -o $var2 -lt 2 ]   #邏輯或  -o

    ?    ?

    ?    ?檔案系統相關測試:

    ?    ?[ -f $file_var ]   #如果給定的變數包含正常的檔案路徑和檔案名稱,則返回真

    ?    ?[ -x $var ]   #如果給定的變數包含的檔案可執行,則返回真

    ?    ?[ -d $var ]   #如果給定的變數包含的是目錄, 則返回真

    ?    ?[ -e $var ]   #如果給定的變數包含的檔案存在,則返回真

    ?    ?[ -w $var ]   #如果給定的變數包含的內容可寫,則返回真

    ?    ?[ -d $var ]    #如果給定的變數包含的內容可讀,則返回真

    ?    ?[ -l $var ]     #如果給定的變數包含的是一個符號連結,則返回真

    ?    ?


    ?    ?字串比較:

    ?    ?    ?可以檢查兩個字串是否相等以及不相等:

    ?    ?    ?[[ $str1 = $str2 ]]    [[ $str1 != $str2 ]]

    ?    ?    ?比較兩個字串之間的大小:

    ?    ?    ?[[ $str1 > $str2 ]]  或者 [[ $str1 < $str2 ]]

    ?    ?    ?[[ -z $str1 ]] 如果str1是Null 字元串,則返回真

    ?    ?    ?[[ -n $str1 ]] 如果str1是非Null 字元串,則返回真?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.