1. 程式人生 > >linux shell指令碼基本操作

linux shell指令碼基本操作

一些寫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