linux命令(while,shell參數的用法),linuxshell
#!/bin/bash while IFS=: read name1 name2 name3 name4 #IFS是從檔案讀取內容時指定的分割符號,將a中的內容以:分開的部分分別賦值給相應變數. do echo $name1 '|' $name2 '|' $name3 '|' $name4 done <a #反引號與$()的功能是命令替換,將反引號或$()中的字串當作命令來執行,但是反引號中不能繼續有反引號,而$()可以有。 LS=`ls` echo $LS #單引號完全不解析命令,忽略所有特殊字元串,照字串原樣輸出. LS='ls' echo $LS #雙引號作用與單引號相似,區別在於它沒有那麼嚴格,在雙引號中有3個特殊字元不能被忽略:$,\,`,即單引號會解釋字串的特殊意思,而單引號直接使用。 LS="ls" echo $LS #不過如果使用eval命令,會讓雙引號中的命令得到解釋。 LS="ls" eval "$LS" set -- 1 2 3 4 #設定參數,與c的main中的2個參數一樣。 while [ $# -gt 0 ] # $#代表參數總數 do echo $1 #輸出第一個參數 shift 1 #將參數個數減1,並且都向1移動一位,也可以設定2,一次移動2位,相當與i--,i是參數總個數。 done #-gt大於 #-lt小於 #-ge大於等於 #-le小於等於 #-eq等於 #-ne不等於 #在指令碼裡面可以用$1,$2...來接受參數,但是還有另外一種方式可以接受參數,那就是getopts。 while getopts abc opt #./main.sh -a -b -c 就可以指定參數然後執行相關命令 do case $opt in a) echo "abcd" ;; b) echo "1234" ;; c) echo "ABCD" ;; *) echo "****" ;; esac done