linux shell if 參數

shell編程中使用到得if語句內判斷參數

  –b當file存在並且是塊文件時返回真

  -c當file存在並且是字符文件時返回真

  -d當pathname存在並且是一個目錄時返回真

  -e當pathname指定的文件或目錄存在時返回真

  -f當file存在並且是正規文件時返回真

  -g當由pathname指定的文件或目錄存在並且設置了SGID位時返回爲真

  -h當file存在並且是符號鏈接文件時返回真,該選項在一些老系統上無效

  -k當由pathname指定的文件或目錄存在並且設置了“粘滯”位時返回真

  -p當file存在並且是命令管道時返回爲真

  -r當由pathname指定的文件或目錄存在並且可讀時返回爲真

  -s當file存在文件大小大於0時返回真

  -u當由pathname指定的文件或目錄存在並且設置了SUID位時返回真

  -w當由pathname指定的文件或目錄存在並且可執行時返回真。一個目錄爲了它的內容被訪問必然是可執行的。

  -o當由pathname指定的文件或目錄存在並且被子當前進程的有效用戶ID所指定的用戶擁有時返回真。

  UNIXShell裏面比較字符寫法:

  -eq等於

  -ne不等於

  -gt大於

  -lt小於

  -le小於等於

  -ge大於等於

  -z空串

  =兩個字符相等

  !=兩個字符不等

  -n非空串

  -------------------------------------------------------------------------

  更爲詳細的說明:

  運算符描述示例

  文件比較運算符

  -efilename如果filename存在,則爲真[-e/var/log/syslog]

  -dfilename如果filename爲目錄,則爲真[-d/tmp/mydir]

  -ffilename如果filename爲常規文件,則爲真[-f/usr/bin/grep]

  -Lfilename如果filename爲符號鏈接,則爲真[-L/usr/bin/grep]

  -rfilename如果filename可讀,則爲真[-r/var/log/syslog]

  -wfilename如果filename可寫,則爲真[-w/var/mytmp.txt]

  -xfilename如果filename可執行,則爲真[-L/usr/bin/grep]

  filename1-ntfilename2如果filename1比filename2新,則爲真[/tmp/install/etc/services-nt/etc/services]

  filename1-otfilename2如果filename1比filename2舊,則爲真[/boot/bzImage-otarch/i386/boot/bzImage]

  字符串比較運算符(請注意引號的使用,這是防止空格擾亂代碼的好方法)

-zstring如果string長度爲零,則爲真[-z$myvar]

  -nstring如果string長度非零,則爲真[-n$myvar]

  string1=string2如果string1與string2相同,則爲真[$myvar=onetwothree]

  string1!=string2如果string1與string2不同,則爲真[$myvar!=onetwothree]

  算術比較運算符

  num1-eqnum2等於[3-eq$mynum]

  num1-nenum2不等於[3-ne$mynum]

  num1-ltnum2小於[3-lt$mynum]

  num1-lenum2小於或等於[3-le$mynum]

  num1-gtnum2大於[3-gt$mynum]

  num1-genum2大於或等於[3-ge$mynum]

  腳本示例:

  #!/bin/bash

  #Thisscriptprintsamessageaboutyourweightifyougiveityour

  #weightinkilosandhightincentimeters.

  if[!$#==2];then

  echo"Usage:$0weight_in_kiloslength_in_centimeters"

  exit

  fi

  weight="$1"

  height="$2"

  idealweight=$[$height-110]

  if[$weight-le$idealweight];then

  echo"Youshouldeatabitmorefat."

  else

  echo"Youshouldeatabitmorefruit."

  fi

  #weight.sh70150

  Youshouldeatabitmorefruit.

  #weight.sh7015033

  Usage:./weight.shweight_in_kiloslength_in_centimeters

  位置參數$1,$2,...,$N,$#代表了命令行的參數數量,$0代表了腳本的名字,

  第一個參數代表$1,第二個參數代表$2,以此類推,參數數量的總數存在$#中,上面的例子顯示了怎麼改變腳本,如果參數少於或者多餘2個來打印出一條消息。

  執行,並查看情況。

  #bash-xtijian.sh60170

  +weight=60

  +height=170

  +idealweight=60

  +'['60-le60']'

  +echo'Youshouldeatabitmorefat.'

  Youshouldeatabitmorefat.

  其中-x用來檢查腳本的執行情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章