shell學習(10) if的使用

2022-07-05 01:33:10 字數 3203 閱讀 2781

在寫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/bash

if [ -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 內完成,也...