第十章 認識和學習bash
read:從鍵盤輸入值賦予給變量。當讀到read的時候,系統就會停下來,等待從鍵盤輸入值。read在指令行中用的不多,也可以用read給變量指派。一般用在腳本檔案中。個人認為echo的意思和cout的意思差不多,不過echo自帶回車功能,不想要回車:-n。
#!/bin/bash
echo “請輸入值。”
read xx
echo “你剛剛輸入的值為$xx”(xx是數字的話最好用{}括起來)
在指令行中,read xx,輸入值後,echo $xx就可以檢視xx這個變量的值。如果沒有xx,那麼會有一個預設的變量REPLY,echo $REPLY也能顯示剛剛輸入的值。
ARRAY:如果一個指令的結果有很多值,那麼數組就可以很好的來管理這些值。
定義一個數組:xx=(aa bb cc dd),數組的下标也是從0開始的。
擷取數組值得方式:echo ${xx[0]}
檢視所有的元素:${xx[*]}或者${xx[@]}.
檢視所有的下标:${!xx[@]},檢視元素的個數:${#xx[@]}。
declare:定義一個環境變量。上面已經講過它的使用。
隻讀變量:declare –r xx,這個xx變量就是一個隻讀變量。
也可以這樣寫:readonly xx。隻讀變量不可以修改,不可以unset。
雙引号,單引号,反引号的差別:
雙引号裡面的變量會被解析出來,而單引号裡面是什麼就會輸出什麼,當反引号嵌套在指令裡面的時候,反引号裡面的内容會優先被執行。反引号同$()。echo “xxxx`hostname` xxx” ó echo“xxxx$(hostname)xxx”
在輸出變量時,最好用{}把變量括起來。如變量xx,echo “${xx}”。
ulimit:限制檔案大小,直接輸入指令ulimit,就可以檢視限制。ulimit –a可以檢視所有的限制,ulimit –f 數字(機關是位元組) ,這樣就可以限制檔案的大小。
變量内容的删除,替代和替換:
變量的删除:
定義變量path=$PATH(當申明變量的時候,不加‘$’,使用變量中的内容的時候,要加上‘$’)。
修改變量:‘%’,‘#’,‘%%’,‘##’。
‘%’,從後往前删,;例如:r=${path%bin*}。
‘*’:值不管是什麼,多有内容。
這句話的意思:從後往前删,隻删除第一次出現bin的之後的内容。
r=${path%%bin*}:從後往前删,一直删除最後一次出現bin的之後到的内容。
‘#’,從前往後删,效果與‘$’相同。
判斷變量是否存在:r=${xx-“aaaaaaaaaa”}:如果xx存在,會把xx的值賦給變量r,如果xx不存在,會把aaaaaaa這個值賦給變量r,這樣不會判斷xx是否為空值,就算是空值,也會傳遞給r。
r=${xx:-“aaaaaaa”}:如果xx存在,而且xx不為空值,那麼xx的值會傳遞給r,否則,aaaaaaa會傳遞個r。
r=${xx:=”aaaaaaaa”}:如果xx不存在,那麼aaaaaa會指派給xx,同時也會指派給r。
r=${xx:?”aaaaaaaa”}:如果xx沒有被定義或者xx為空值的話,那麼就會輸出?後面的警告資訊。
r=${xx:+”aaaaaaaa”}:xx如果定義了,并且xx為非空值得話,那麼aaaaaa這個值會指派給變量r。
指令的别名:alias。取消别名:unalias。alias aa=”ifconfigeth0”。
unalias aa。
檢視曆史:history。隻能儲存1000個指令,因為變量HISTFILESIZE的值是1000。清空曆史指令:history –c。