linux shell指令碼基本操作
阿新 • • 發佈:2018-12-24
一些寫10次指令碼有9次會用到的操作,給自己留檔。
bin/bash
在指令碼開頭應加上如下一行:
#!/bin/bash
其中”#!”是一個2位元組魔法數字,後面接的路徑名/bin/bash指定了一個解釋指令碼命令,除/bin/bash外,/bin/sh等也可作為linux shell的解釋指令碼,具體區別沒有深究。
;
分號表示命令分隔符,如果想把幾條命令寫在一行,那麼命令與命令之間要用分號隔開。
read
read命令用於讀取使用者輸入:
echo "input sth:"
read A
echo "your input is $A"
輸入引數
在指令碼中,執行指令碼時輸入的第一個引數用$1
$2
表示,以此類推。例如test.sh:
#!/bin/bash
test=$1
echo $test
在執行sh test.sh 111
時就能得到:
111
bc
bc用於數學計算,尤其是浮點數計算,例如:
echo "scale=2; 1 / 3" | bc
`
反引號用於將執行命令的結果賦給變數,例如:
a=`ls | wc -l`
echo $a
這一段程式碼統計了當前目錄下的檔案和目錄總數
for迴圈
for1
for i in 2 3 4
do
echo "the output is $i"
done
for2
for i in $(seq 1 5);
do
echo $i
done;
結果會打印出從1到5這5個數字。
for迴圈還有多種形式,以後再補
if語句
抄了個例子,獲取作業系統型別
SYSTEM=`uname -s`
if [ $SYSTEM = "Linux" ]; then
echo "Linux"
elif [ $SYSTEM = "FreeBSD" ]; then
echo "FreeBSD"
else
echo "Other"
fi
shell指令碼對於空格的要求可以說很嚴格了,在上面的if語句中,if關鍵字和中括號和表示式中間缺少任一空格都會報語法錯誤。兩邊有空格的等號用於判斷左右兩邊是否相等。
if中的條件:整數比較
可以通過普通的比較操作符或shell指令碼專用的比較操作符進行比較。shell指令碼專用的比較操作符包括:
-eq 等於
-ne 不等於
-gt 大於
-ge 大於等於
-lt 小於
-le 小於等於
例如:
k=1
if [ $k > 0 ]; then
echo 'k>0'
fi
執行結果為:
k>0
if中的條件:浮點數比較
浮點數的比較方法比起整數會曲折不少,可以藉助“浮點數與某值判斷”表示式的值是否為1來進行,例如:
k=0.2
if [ $(echo "$k > 0.1" | bc) -eq 1 ]; then
echo "k>0.1"
fi
執行結果為:
k>0.1