-z 判斷 變數的值,是否為空; zero = 0
- 變數的值,為空,返回0,為true
- 變數的值,非空,返回1,為false
-n 判斷變數的值,是否為空 name = 名字
- 變數的值,為空,返回1,為false
- 變數的值,非空,返回0,為true
[ -z "$pid" ] 單對中括號變數必須要加雙引號
[[ -z $pid ]] 雙對括號,變數不用加雙引號
[ 5 -lt 3 -o 3 -gt 2 ] 或者條件成立
[5 -lt 3 ] || [ 3 -gt 2]
[5 -gt 3 ] && [ 3 -gt 2] 成立
if [ -f file ]
如果檔案存在
if [ -d ... ]
如果目錄存在
if [ -s file ]
如果檔案存在且非空
if [ -r file ]
如果檔案存在且可讀
if [ -w file ]
如果檔案存在且可寫
if [ -x file ]
如果檔案存在且可執行
if [ int1 -eq int2 ]
如果int1
等於int2
if [ int1 -ne int2 ]
如果不等於
if [ int1 -ge int2 ]
如果》=
if [ int1 -gt int2 ]
如果》if [ int1 -le int2 ]
如果<=
if [ int1 -lt int2 ]
如果<
if [ $a = $b ]
如果string1
等於string2
字串允許使用賦值號做等號
if [ $string1 != $string2 ]
如果string1
不等於string2
if [ -n $string ]
如果string 非空(
非0),返回
0(true)
if [ -z $string ]
如果string
為空if [ $sting ]
如果string
非空,返回
0 (和
-n類似
)
假設有變數
var=
1. #
號擷取,刪除左邊字元,保留右邊字元。
1echo $
其中var
是變數名,
# 號是運算子,
*//
表示從左邊開始刪除第乙個
// 號及左邊的所有字元
即刪除http://
結果是:
號擷取,刪除左邊字元,保留右邊字元。
1echo $
##*/
表示從左邊開始刪除最後(最右邊)乙個
/ 號及左邊的所有字元
即刪除結果是123.htm
3. %
號擷取,刪除右邊字元,保留左邊字元
1echo $
%/*
表示從右邊開始,刪除第乙個
/ 號及右邊的字元
結果是:
4. %%
號擷取,刪除右邊字元,保留左邊字元
1echo $
%%/*
表示從右邊開始,刪除最後(最左邊)乙個
/ 號及右邊的字元
結果是:
5. 從左邊第幾個字元開始,及字元的個數
1echo $
其中的0
表示左邊第乙個字元開始,
5 表示字元的總個數。
結果是:
6.
從左邊第幾個字元開始,一直到結束。
1echo $
其中的7
表示左邊第
8個字元開始,一直到結束。
結果是:
從右邊第幾個字元開始,及字元的個數
1echo $
其中的0-7
表示右邊算起第七個字元開始,
3 表示字元的個數。
結果是:
1238.
從右邊第幾個字元開始,一直到結束。
1echo $
表示從右邊第七個字元開始,一直到結束。
結果是:
123.htm
注:(左邊的第乙個字元是用
0 表示,右邊的第乙個字元用
0-1
表示)數值型別的陣列:一對括號表示陣列,陣列中元素之間使用"空格
"來隔開。
舉個列子
: arr_number=(1 2 3 4 5);
字串型別陣列:同樣,使用一對括號表示陣列,其中陣列中的元素使用雙引號或者單引號包含,同樣使用"空格
"來隔開。
arr_string=("abc" "edf" "sss");
或者arr_string=('abc' 'edf' 'sss');
我們使用數值型別陣列
arr_number=(1 2 3 4 5)
shell
裡面想獲取某個變數的值,使用
$符開頭,如:
$a或者
$即可。
獲取陣列長度
arr_length=$或$
均可,即形式:
$ 可得到陣列的長度。
讀取某個下標的值
arr_index2=$
,即形式:
$對某個下標賦值
這裡需要提出兩個問題:
第乙個問題是如果該下標元素已經存在,會怎麼樣?
答:會修改該下標的值為新的指定值。
例如:arr_number[2]=100
,陣列被修改為
(1 2 100 4 5)
第二個問題是如果指定的下標已經超過當前陣列的大小,如上述的
arr_number
的大小為
5,指定下標為
10或者
11或者大於
5的任意值會如何?
答:新賦的值被追加到陣列的尾部。
例如:arr_number[13]=13
,陣列被修改為
(1 2 100 4 5 13)
刪除操作
清除某個元素:
unset arr_number[1]
,這裡清除下標為
1的陣列;
清空整個陣列:
unset arr_number;
分片訪問
分片訪問形式為:
$,注意,不包括結束下標元素的值。
例如:$
,這裡分片訪問從下標為
1開始,元素個數為4。
模式替換
形式為:
$例如:
$陣列的遍歷
陣列遍歷我們使用
for語句來演示:
for v in $; do
echo $v;
done
Linux shell 指令碼語法總結
1.每個命令之間用 隔開 說明 各命令的執行給果,不會影響其它命令的執行。換句話說,各個命令都會執行,但不保證每個命令都執行成功。2.每個命令之間用 隔開 說明 若前面的命令執行成功,才會去執行後面的命令。這樣可以保證所有的命令執行完畢後,執行過程都是成功的。3.每個命令之間用 隔開 說明 是或的意...
Linux shell指令碼執行方法總結
linux下新建乙個print hello world的指令碼程式,如下所示 boke vim hello.sh boke cat hello.sh bin bash this is hello script echo hello,i am yliu 先來檢視hello.sh的檔案屬性,如下所示 b...
Linux Shell指令碼基礎
shell指令碼在處理自動迴圈或大的任務方面可節省大量時間,且功能強大。任何指令碼都可能有注釋,加注釋需要此行的第乙個字元為 直譯器對此行不予解釋。指令碼不是複雜的程式,它是按行解釋的。指令碼第一行總是以 bin sh開始,這段指令碼通知shell使用系統上的 bourne shell直譯器。指令碼...