開頭
#!/bin/bash // 也可改用 #!/bin/sh ,執行起來少部份會有不同結果
判斷式
-e /dir/fileName // 檔案或目錄是否存在
-f /dir/fileName // 檔案是否存在
-d /dir/fileName // 目錄是否存在
-z string // 判斷字串是否為空,為空回傳 true (-n 可省略)
-n string // 判斷字串是否有值
-eq // 兩數值相等
-ne // 兩數值不相等
-gt // 前 > 後
-lt // 前 < 後
-ge // 前 >= 後
-le // 前 <= 後
-a // and
-o // or
! // 反向
可使用在 test 、 [ ]、while...,比如:
test -e /dir/fileName
[ ! -z "string" ]
$1用在判斷式要用「"」框起來,比如:
[ "$1" = "string" ]
if
if [ 條件判斷式 ]; then
內容一
elif [ 條件判斷式二 ]; then
內容二
else
內容三
fi
case
case $變數名稱 in
"第一個值")
內容一
;;
"第二個值")
內容二
;;
*)
內容三
exit 1
;;
esac
while
while [ 條件判斷式 ]
do
內容
done
for
for var in con1 con2 con3 ...
do
內容
done
for (( i=1; i<=3; i=i+1 ))
do
內容
done
取指定長度的字串
取第一個字元( 0 代表要顯示的第一個字元 index,1 代表顯示到這為止的字元 index )
STRING="$1"
STRING_HEAD=${STRING:0:1}
STRING_HEAD=`printf "%.*s\n" 1 "$STRING"`
判斷輸入參數個數
if [ "$#" == "0" ]; then
echo "$0 使用說明"
exit 0
fi
使用輸入參數
$@ // 列出全部參數(會用雙引號框起來) ( $* 也是列出全部參數,但僅用空格分隔)
${0} // 列出執行名稱,也可用 $0
${1} // 列出第一個參數,也可用 $1
${2} // 列出第二個參數,也可用 $2
... // 以此類推
其他長度用法
${#1} // 第一個參數的字串長度
$((${#1}-${#2})) // 計算 第一參數字串長度 減 第二參數字串長度
陣列用法
NAME=() // 陣列宣告
NAME=('str1' 'str2') // 陣列宣告+定義
NAME+=('str3') // 增加陣列內容
NAME+=('str3' 'str4') // 增加兩個陣列內容
${#NAME[@]} // 目前陣列長度 or ${#NAME[*]}
NAME[${#NAME[@]}]="str5" // 修改或增加陣列內容 or NAME[${#NAME[*]}]="str5"
unset NAME[1] // 刪除陣列第二個元素
NAME=( ${NAME[@]/str3} ) // 刪除內容為str3的元素 or NAME=( ${NAME[*]/str3} )
// for 用法 or ${NAME[*]}
for STR in "${NAME[@]}"; do
...
done
讀取檔案
while read line ; do
echo $line
done < "/path/name.file"
IFS=$'\n' // 把shell的內建分割符號改為換行
for line in `cat /path/name.file`;
do
echo $line;
done
unset IFS // 還原 IFS
其他
$(命令) // 執行命令
$(( 數學運算式 )) // 數學計算
沒有留言:
張貼留言