shell指令碼常見使用
echo 命令用於向視窗輸出文字
定義變數 your_name=」rrr」 變數名和等號之間不能有空格
使用乙個定義過的變數,要在變數名前面加美元符號 如 echo $ 加花括號是為了幫助直譯器識別變數的邊界
刪除變數 unset variable_name
字串:
雙引號的優點:雙引號裡可以有變數 雙引號裡可以出現轉義字元 例如:
your_name='qinjx'
str="hello, i know you are \"$your_name\"! \n"
擷取: # 號擷取,刪除左邊字元,保留右邊字元。%號擷取,刪除右邊字元,保留左邊字元
echo $
定義陣列:
陣列名=(值1 值2 … 值n) 用括號來表示陣列,陣列元素用」空格」符號分割開。例如:
array_name=(value0 value1 value2 value3)
array_name[0]=value0
遍歷陣列 使用@符號可以獲取陣列中的所有元素,例如:
echo $
獲取陣列長度, 加#
length=$
注釋:
可以把這一段要注釋的**用一對花括號括起來,定義成乙個函式,沒有地方呼叫這個函式,這塊**就不會執行,達到了和注釋一樣的效果。
傳遞引數:
$n。n 代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數, $0 為執行的檔名,$# 傳遞到指令碼的引數個數 $* 所有引數,合成乙個引數列印 $@ 所有引數,合成多個引數列印
例如:echo "shell 傳遞引數例項!";
echo "執行的檔名:$0";
echo "第乙個引數為:$1";
echo "第二個引數為:$2";
echo "第三個引數為:$3";
$ ./test.sh 1 2 3
基本運算子:
原生bash不支援簡單的數**算,但是可以通過其他命令來實現,例如expr
#!/bin/bash
val=`expr 2 + 2`
echo "兩數之和為 : $val"
布林運算子: ! 非; -o 或; -a 與;
邏輯運算子 && and || or
字串運算子:
運算子 說明 舉例
= 檢測兩個字串是否相等,相等返回 true。 [ a = b ] 返回 false。
!= 檢測兩個字串是否相等,不相等返回 true。 [ a != b ] 返回 true。
-z 檢測字串長度是否為0,為0返回 true。 [ -z a]
返回fa
lse。
−n檢測
字串長
度是否為
0,不為
0返回t
rue。
[−n「
a ]返
回fal
se。−
n檢測字
符串長度
是否為0
,不為0
返回tr
ue。[
−n
「a」 ] 返回 true。
str 檢測字串是否為空,不為空返回 true。 [ $a ] 返回 true。
注意:比較兩個數字的時候使用 ==
顯示
-e 為開啟轉義
\n 換行 \c 不換行
如: echo -e "ok! \n"
echo "it it a test"
顯示結果定向至檔案
echo "it is a test" > myfile
輸出字串,不進行轉義或取變數(用單引號)
echo '$name\"'
結果 $name\"
顯示命令執行結果, 如顯示日期
echo `date`
注意: 這裡使用的是反引號 `, 而不是單引號 '。
流程控制:
注意:sh的流程控制不可為空,即不可以什麼都不寫空著。
if
if condition
then
command1
command2
...commandn
fi寫成一行則是:
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
末尾的fi就是if倒過來拼寫
if else
if condition
then
command1
command2
...commandn
else
command
fi
if else-if else
if condition1
then
command1
elif condition2
then
command2
else
commandn
fi例如:
a=10
b=20
if [ $a == $b ]
then
echo "a 等於 b"
elif [ $a -gt $b ]
then
echo "a 大於 b"
elif [ $a -lt $b ]
then
echo "a 小於 b"
else
echo "沒有符合的條件"
fi
if else語句經常與test命令結合使用
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo '兩個數字相等!'
else
echo '兩個數字不相等!'
fi
for 迴圈
for var in item1 item2 ... itemn
do command1
command2
...commandn
done
寫成一行:
for var in item1 item2 ... itemn; do command1; command2… done;
while 語句
#!/bin/sh
int=1
while(( $int<=5 ))
do echo $int
let "int++"
done
使用中使用了 bash let 命令,它用於執行乙個或多個表示式,變數計算中不需要加上 $ 來表示變數
函式
demofun()
echo "-----函式開始執行-----"
demofun
echo "-----函式執行完畢-----"
結果
-----函式開始執行-----
這是我的第乙個 shell 函式!
-----函式執行完畢-----
本文部分參考菜鳥聯盟 Shell指令碼學習4 幾種常見的Shell
上面提到過,shell是一種指令碼語言,那麼,就必須有直譯器來執行這些指令碼。unix linux上常見的shell指令碼直譯器有bash sh csh ksh等,習慣上把它們稱作一種shell。我們常說有多少種shell,其實說的是shell指令碼直譯器。bash是linux標準預設的shell,...
shell指令碼的使用
說明 chmod a x test.sh 使指令碼具有執行許可權 a 20 b 10 1.算術運算子列表 運算子 說明 舉例 加法 expr a b 結果為 30。減法 expr a b 結果為 10。乘法 expr a b 結果為 200。乘法使用不同 除法 expr a b 結果為 2。取餘 e...
shell指令碼使用集錦
本章會記錄開發過程中用到的shell指令碼命令,會一直更新下去 shell本身的pid processid shell最後執行的後台process的pid 最後執行的命令的結束 返回值 使用set命令設定的flag一覽 所有 引數列表 如 所有引數列表。如 所有引數列 表。如 用 括起來的情況 以 ...