#!/bin/bash 宣告指令碼使用的shell名稱
# 注釋
path=/bin:/sbin:/usr/bin:/usr/sbin
export path 宣告環境變數
互動式指令碼
read -p "please input your first name: " firstname #提示使用者輸入
echo -e "\nyour first name is: $firstname" #輸出結果
建立乙個帶日期的檔案
read -p "input your filename: " fieuser #提示使用者輸入
filename=$ #判斷是否輸入檔名
date=$(date +%y%m%d) #今天的日期
file=$$ #組成檔名
touch "$file" #建立檔案
數值運算
read -p "first nu: " firstnu
read -p "second nu " secnu
total=$($firstnu * $secnu)
關於檔名的檔案型別判斷 test -e filename 表示是否存在
-e 檔案是否存在
-f 檔名是否存在且為檔案
-d 檔名是否存在且為目錄
-b 檔名是否存在且為block device裝置
-c 檔名是否存在且為character device裝置
-s 檔名是否存在且為socket檔案
-p 檔名是否存在且為fifo(pipe)檔案
-l 檔名是否存在且為連線檔案
關於檔案的許可權檢測, 如test -r filename 是否可讀
-r 檔名是否存在且可讀
-w 檔名是否存在且可寫
-x 檔名是否存在且可執行
-u 檔名是否存在且有 suid的屬性
-g 檔名是否存在且有 sgid的屬性
-k 檔名是否存在且有 sticky bit的屬性
-s 檔名是否存在且為非空白檔案
兩個檔案之間的比較, 如:test file1 -nt file2
-nt file1是否比file2新
-ot file1是否比file2舊
-et 判斷file1與file2是否為同乙個檔案,可用在判斷硬鏈結上
關於兩個整數之間的判斷,如test n1 -eq n2
-eq 相等
-ne 不等
-gt 大於
-lt 小於
-ge 大於等於
-le 小於等於
判定字串資料
test -z string 字串為空時,為true
test -n string 字串為空時,為false
test str1 = str2 若相等,則為true
test str1 != str2 若不相等,則為true
多重條件判定,例如:test -r filename -a -x filename
-a 兩個條件同時成立時,則為true
-o 任何乙個條件成立時,則為true
! 反向狀態,如test ! -x file,file不是可執行檔案時,為true
[ ] 條件判斷符號
shell指令碼預設變數
$0 shell指令碼檔名, $1 $2..,shell指令碼後跟的引數
$# 後接引數個數
$@ 代表"$1" "$2" "$3
$* 代表"$1c$2c$3c$4",其中c為分隔符,預設為空格
shift:造成引數變數號碼偏移
條件判斷
if [ 條件判斷式 ]; then
當前條件成立時,可進行的命令
fi&&代表and
||代表or
多重複雜條件判斷
if [ 條件判斷式一 ]; then
當前條件成立時,可進行的命令
elif [ 條件判斷式二 ]; then
當前條件成立時,可進行的命令
else
前面條件都不成立時,可執行的命令
ifcase $變數名稱 in <==關鍵字為case,還有變數前有$
"第乙個變數內容")
程式段;;
"第二個變數內容")
程式段;;
*)程式段
;;esac
while [ condition ] <==中括號內的狀態就是判斷式
do <==do 是迴圈的開始
程式段落
done <==done 是迴圈的結束
當condition條件成立時,就進行迴圈
until [ condition ]
do程式段落
done
當condition條件成立時,就終止迴圈
for...do...done固定迴圈
for var in con1 con2 con3 ...
do程式段
done
for...do...done的數值處理
for (( 初始值; 限制值; 執行步長 ))
do程式段
done
shell指令碼的追蹤與除錯
sh [ -nvx ] scrips.sh
-n : 不要執行script,僅查詢語法的問題;
-v : 在執行script前,先將script的內容輸出到螢幕上;
-x : 在執行過程中,將使用到的script內容顯示到螢幕上。
Shell指令碼語法
定義單變數 p name kang 使用單變數 echo p name js 輸出kang.js echo p name.js 輸出kang.js cp p name.js copy.js 命令1 命令2 如果左邊的 命令1 執行成功,那麼右邊的 命令2 才會被執行。命令1 命令2 與 相反。如果 ...
shell指令碼 語法
條件測試 test 命令test 可以測試乙個條件是否成立,如果測試條件為真,則該命令的exitstatus為0,反之,exitstatus為1。注意 命令 各引數之間應該用空格隔開,以 結尾。但是 不是命令。測試命令 d dir 如果dir存在並且是乙個目錄則為真 f file 如果file存在並...
shell指令碼語法
測試乙個條件是否成立,python ubuntu 1004 var 2 python ubuntu 1004 test var python ubuntu 1004 echo 0python ubuntu 1004 test var gt 5 python ubuntu 1004 echo 1或者 ...