shell 遞歸遍歷目錄
2\
${FileName##*.} #提取最後一個"."後面的字符,即擴展名
${FileName##*/} #提取最後一個"/"後面的字符,即路徑中的文件名
3\
shell 字符串爲空和長度的判斷
計算字符串長度可用的4種方法:
echo “$str”|awk '{print length($0)}'
expr length “$str”
echo “$str”|wc -c
但是第三種得出的值會多1,可能是把結束符也計算在內了
if [ "$str" = "" ]
if [ x"$str" = x ]
if [ -z "$str" ]
注意:都要代雙引號,否則有些命令會報錯,養成好習慣吧!
4\ shell "read"
1. Read的一些選項
Read可以帶有-a, -d, -e, -n, -p, -r, -t, 和 -s八個選項。
-a :將內容讀入到數值中
echo -n "Input muliple values into an array:" read -a array echo "get ${#array[@]} values in array"
-d :表示delimiter,即定界符,一般情況下是以IFS爲參數的間隔,但是通過-d,我們可以定義一直讀到出現執行的字符位置。例如read –d madfds value,讀到有m的字符的時候就不在繼續向後讀,例如輸入爲 hello m,有效值爲“hello”,請注意m前面的空格等會被刪除。這種方式可以輸入多個字符串,例如定義“.”作爲結符號等等。
-e :只用於互相交互的腳本,它將readline用於收集輸入行。讀到這幾句話不太明白什麼意思,先跳過。
-n :用於限定最多可以有多少字符可以作爲有效讀入。例如echo –n 4 value1 value2,如果我們試圖輸入12 34,則只有前面有效的12 3,作爲輸入,實際上在你輸入第4個字符‘3’後,就自動結束輸入。這裏結果是value爲12,value2爲3。
-p :用於給出提示符,在前面的例子中我們使用了echo –n “…“來給出提示符,可以使用read –p ‘… my promt?’value的方式只需一個語句來表示。
-r :在參數輸入中,我們可以使用’/’表示沒有輸入完,換行繼續輸入,如果我們需要行最後的’/’作爲有效的字符,可以通過-r來進行。此外在輸入字符中,我們希望/n這類特殊字符生效,也應採用-r選項。
-s :對於一些特殊的符號,例如箭頭號,不將他們在terminal上打印,例如read –s key,我們按光標,在回車之後,如果我們要求顯示,即echo,光標向上,如果不使用-s,在輸入的時候,輸入處顯示^[[A,即在terminal上 打印,之後如果要求echo,光標會上移。
-t :用於表示等待輸入的時間,單位爲秒,等待時間超過,將繼續執行後面的腳本,注意不作爲null輸入,參數將保留原有的值
2. Read的相關實例
a. 拼接文件
#將afile文件中的前三行與bfile中的前四行拼接在一起 while read -u3 i && read -u4 j;do echo $i $j done 3<afile 4<bfile
b. 輸入不在終端顯示
read -p "Input passwd:" -s Passwd echo $Passwd
c. 限時輸入,否則退出
#延遲五秒,沒有輸入將自動退出 read -p "Input a number:" -t 5 Number
d. 讀取限定字符
#從輸入中取5個字符 read -p "Input a word:" -n 5 Word
e. 等待輸出q退出
#輸入,直到輸入q,將自動退出 read -dp -p "Input some words end with q:" word