在寫linux指令碼的時候,經常會用到判斷,這篇主要講if的具體使用。
if用法:
if [ ] ;then
command
elif [ ] ;then
command
else
command
fishell 裡面比較字元寫法:
-eq 等於
-ne 不等於
-gt 大於
-lt 小於
-le 小於等於
-ge 大於等於
-z 空串
= 兩個字元相等
!= 兩個字元不等
-n 非空串
判斷引數見下表:
型別運算子
描述示例
檔案比較運算子
-e filename
如果 filename 存在,則為真
[ -e /var/log/syslog ]
-d filename
如果 filename 為目錄,則為真
[ -d /tmp/mydir ]
-f filename
如果 filename 為常規檔案,則為真
[ -f /usr/bin/grep ]
-l filename
如果 filename 為符號鏈結,則為真
[ -l /usr/bin/grep ]
-r filename
如果 filename 可讀,則為真
[ -r /var/log/syslog ]
-w filename
如果 filename 可寫,則為真
[ -w /var/mytmp.txt ]
-x filename
如果 filename 可執行,則為真
[ -l /usr/bin/grep ]
字串比較運算子
-z string
如果 string 長度為零,則為真
[ -z $myvar ]
-n string
如果 string 長度非零,則為真
[ -n $myvar ]
string1 = string2
如果 string1 與 string2 相同,則為真
[ $myvar = one two three ]
string1 != string2
如果 string1 與 string2 不同,則為真
[ $myvar != one two three ]
算術比較運算子
num1 -eq num2
等於[ 3 -eq $mynum ]
num1 -ne num2
不等於[ 3 -ne $mynum ]
num1 -lt num2
小於[ 3 -lt $mynum ]
num1 -le num2
小於或等於
[ 3 -le $mynum ]
num1 -gt num2
大於 [ 3 -gt $mynum ]
num1 -ge num2
大於或等於
[ 3 -ge $mynum ]
指令碼栗子1:
#!/bin/bashif [ -d /home/kumufengchun/trash ];then
echo'ok
'else
echo'no
'fiif [ -e /home/kunufengchun/test.sh ] && [ -f /home/kumufengchun/test.sh ];then
echo
'exist
'else
echo
'noexist
'fi;
注意:在判斷時,if後邊的中括號前後一定要有空格,否則會報錯,應寫成 if [ -e /home/kunufengchun/test.sh ],而不是 if [-e /home/kunufengchun/test.sh]
指令碼栗子2:
#!/bin/bash# this script prints a message about your weight
ifyou give it your
# weight
in kilos and hight in
centimeters.
if [ ! $# == 2 ]; then
echo
"usage: $0 weight_in_kilos length_in_centimeters
"exit
fiweight="$1"
height="$2"
idealweight=[height - 110]
if [ weight−leidealweight ] ; then
echo
"you should eat a bit more fat.
"else
echo
"you should eat a bit more fruit."fi
# weight.
sh70
150you should eat a bit
more
fruit.
# weight.
sh70
15033
usage: ./weight.sh weight_in_kilos length_in_centimeters
位置引數 1
,'>
1,2,..., n
,'>n,
#代表了命令列的引數數量, $0代表了指令碼的名字,
第乙個引數代表1,第
二個引數
代表'>1,
第二個引數代表2,以此類推,引數數量的總數存在$#中,上面的例子顯示了怎麼改變指令碼,如果引數少於或者多餘2個來列印出一條訊息。
# bash -x tijian.sh 60 170
+ weight=60
+ height=170
+ idealweight=60
+ '[' 60 -le 60 ']'
+ echo 'you should eat a bit more fat.'
you should eat a bit more fat.
其中-x用來檢查指令碼的執**況。
Shell 學習10 Shell 注釋
以 開頭的行就是注釋,會被直譯器忽略。sh裡沒有多行注釋,只能每一行加乙個 號。只能像這樣 這是乙個自動打ipa的指令碼,基於webfrogs的ipa build書寫 特色 全自動打包,不需要輸入任何引數 使用者配置區 開始 專案根目錄,推薦將此指令碼放在專案的根目錄,這裡就不用改了 使用者配置區 ...
tr的使用 shell學習(9)
tr用於字元轉換 刪除或去重。對於inputfile中 整個檔案作為整體,而不是一行一行 處在set1中的內容,執行操作。set1形式 a za z0 9 no n 任選其中幾個進行組合,不需要像這裡一樣全部包含 理論上 o n代表o連續出現n次,即將這n個o視為乙個單元,o為前面任意乙個字元。但實...
shell學習之()與 的使用
在 shell command line 中,一般人或許不太計較 與 這兩對符號的差異,雖然兩者都可將多個命令作群組化處理,但若從技術細節上,卻是很不一樣的 將 command group 置於 sub shell 去執行,也稱 nested sub shell。則是在同乙個 shell 內完成,也...