目錄
Debug
讀取輸入
取得執行shell時的參數當變數
if / else / else if 寫法
IF 雙判斷式
用正規化和萬用字元做模糊判斷
判斷是否是檔案
檔案判斷
字串比較
數字比較
Ref
Debug
set –x 把變數的值顯示出來,看是否如預期
set –v 這樣會先把還沒處理過的程式馬秀出來
set –xv 顯示更多的資訊。
讀取輸入
#!/bin/bash
echo -n "pls input a number:"
read UR_NUM
echo "the number is $UR_NUM"
echo -e : 代表輸出時不要換行
取得執行shell時的參數當變數
#!/bin/sh
#$1 代表在執行 shell 時帶的第一個參數
if [ "$1" = "123" ] #字串的比較
then
echo "var is 123"
fi
if / else / else if 寫法
#!/bin/sh
VAR1=1
if [ $VAR1 = 123 ] #數字的比較
then
echo "var is 123"
elif [ $VAR1 = 456 ]
then
echo "var is 456"
else
echo "var is 789"
fi
IF 雙判斷式
if [ 條件判斷式一 ] && [ 條件判斷式二 ]
then
陳述句一
fi
用正規化和萬用字元做模糊判斷
- 正規化的判斷式(=~),所以這個判斷式要使用雙中括號包起來
- 含有萬用字元(*)的那個字串不可以用雙引號圍住,否則就會判斷錯誤
#!/bin/bash
echo -n "你好!請輸入一個單字:"
read MY_WORD
if [ "$MY_WORD" == "Pajace2001" ]; then
echo "你輸入的不是 Pajace2001 "
elif [ "$MY_WORD" == "Pajace9527" ]; then
echo "你輸入的是 Pajace9527"
elif [[ $MY_WORD == Pajace* ]]; then
echo "你輸入的是 Pajace 開頭的字 - $MY_WORD "
elif [[ $MY_WORD =~ Pajace ]]; then
echo "你輸入的是含有 Pajace 字 - $MY_WORD "
else
echo "你輸入的是 $MY_WORD "
fi
判斷是否是檔案
#!/bin/sh
if [ -f "/home/phpini/testfile" ]
then
echo "/home/phpini/testfile is a file"
else
echo "/home/phpini/testfile is not a file"
fi
檔案判斷
判斷式說明
-d filefile 是目錄傳回 ture
-f filefile 是檔案傳回 ture
-r filefile 可以讀傳回 ture
-s filefile 儲存容量大於 0 傳回 ture
-w filefile 可以寫入傳回 ture
-x filefile 可以執行傳回 ture
-L filefile 為軟連結傳回 ture
file1 -nt file2file1 比 file2 新傳回 ture
file1 -ot file2file1 比 file2 舊傳回 ture
file1 -ef file2file1 與 file2 為同一檔案傳回 ture
字串比較
判斷式說明
$str1 = $str2$str1 與 $str2 字串是否相同
$str1 == $str2$str1 與 $str2 字串是否相同
$str1 != $str2$str1 與 $str2 字串是否不相同
-n $str當字串有值不是 null 回傳 true
-z $str當字串沒值是 null 回傳 true
數字比較
判斷式說明
var1 -eq var2var1 等於 var2 回傳 true
var1 -ne var2 var1var1 不等於 var2 回傳 true
var1 -gt var2var1 大過 var2 回傳 true
var1 -ge var2var1 大過或等如 var2 回傳 true
var1 -lt var2var1 小過 var2 回傳 true
var1 -le var2var1 小過或等如 var2 回傳 true
沒有留言:
張貼留言