獲取變數的值可以使用$var或者$後者可以預防變數讀取錯誤。$(command)可以獲得命令的執行結果。
1. shell指令碼的書寫格式
1 #!/bin/bash
2 #程式說明(包括日期,作者,程式作用等資訊)
3 path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
4 echo -e "hello world!\a\n"
5 exit 0
2. 條件判斷
(1)利用test命令測試功能
例如檢視某一檔案是否存在:test -e filename
test -e poem.txt && echo "exist"||echo "not exist"
當poem.txt存在時才會執行echo "exist",否則執行echo "not exist"。
test命令關於檔案的選項有以下幾個:
-b file 如果檔案為乙個塊特殊檔案,則為真
-c file 如果檔案為乙個字元特殊檔案,則為真
-d file 如果檔案為乙個目錄,則為真
sr:v\3j0-e file 如果檔案存在,則為真
-f file 如果檔案為乙個普通檔案,則為真
-g file 如果設定了檔案的 sgid 位,則為真
-g file 如果檔案存在且歸該組所有,則為真
-k file 如果設定了檔案的粘著位,則為真
-o file 如果檔案存在並且歸該使用者所有,則為真
-p file 如果檔案為乙個命名管道,則為真
-r file 如果檔案可讀,則為真
-s file 如果檔案的長度不為零,則為真
-s file 如果檔案為乙個套接字特殊檔案,則為真
-t fd 如果 fd 是乙個與終端相連的開啟的檔案描述符(fd 預設為 1),則為真
-u file 如果設定了檔案的 suid 位,則為真
-w file 如果檔案可寫,則為真
-x file 如果檔案可執行,則為真
另外關於兩個檔案之間的比較選項有:
-ef-nt
-ottest file1 -ef file2測試以判斷兩個檔案是否與同乙個裝置相連,是否擁有相同的 inode 編號
test file1 -nt file2 測試以判斷第乙個檔案是否比第二個檔案更新(由修改日期決定)
test file1 -ot file2 測試以判斷第乙個檔案是否比第二個檔案更舊
關於字串的判斷選項有:
test -z string 判斷string是否為空
test -n string 判斷string是否非空
test str1=str2 判斷str1是否等於str2
test str1!=str2 判斷str1是否不等於str2
多重條件判斷:
-a 兩個條件同時成立 例如test -r file1 -a -x file1,判斷file1是否同時可讀可執行
-o 任何乙個條件成立 例如test -r file1 -o -x file1,判斷file1具有可讀或者可執行許可權
! 取反,例如test !-x file1,file1不具有可執行許可權時,返回true
(2)利用[ ]進行條件判斷
除了使用test命令進行條件判斷之外,還可以使用符號來判斷。
例如 [ -z "$home" ] ; echo $?
需要注意的是:
在中括號內的每個元件都要用空格分隔;
在中括號內的變數和常量最好都以雙引號引起來。
例如根據使用者輸入字元y或n分別顯示yes或no
#!/bin/bash
read -p "please input you chaoice(y/n)" ch
[ "$ch" == "y" -o "$ch" == "y" ] && echo "yes!" && exit 0
[" $ch " == "n" -o "$ch" == "n" ] && echo "no!" && exit 0
echo "i don't know what you input~"
Linux學習之shell程式設計二
shell script 的預設變數 0,1.代表後接的引數個數 代表 1,2,3,4之意 代表 1c 2c 3c 4 其中c為分隔符,預設為空格 shift 可以偏移變數號碼,比如shift 或者shift 2可以將變數 向左移動1次或2次 bin bash filename shell05.sh...
Linux學習之Shell指令碼程式設計
一.shell指令碼定義 shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接收使用者輸入的命令並把它送入核心去執行。實際上shell是乙個命令直譯器,它解釋由使用者輸入的命令並且把它們送到核心。shell翻譯成殼的意思,它是包裹在linux核心外層的,乙個可通過一系列的li...
linux之shell程式設計
shell你只需要了解這麼多 補充 1.第七部分特殊字元的使用 特殊字元用在shell指令碼中即可 2.第八部分中轉義字元的理解 shell命令列中特殊字元與其轉義詳解 去除特殊含義 這部分主要給大家詳細介紹了shell命令列中特殊字元與其轉義 去除特殊含義 的相關資料,文中介紹的很詳細,相信對大家...