標籤: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 字元串,則返回真?