linux腳本:shell, 判斷輸入參數的個數(命令行)


 

if [ $# != 3 ] ; then
echo "USAGE: $0 from to"
echo " e.g.: $0 ~/oucaijun/from ~/oucaijun/to"
exit 1;
fi

————————————————————————

$#代表了命令行的參數數量

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

-ne    不等於

————————————————————————

 

UNIX Shell -> 比較:

 

整數比較

-eq

等於

if [ "$a" -eq "$b" ]

-ne

不等於

if [ "$a" -ne "$b" ]

-gt

大於

if [ "$a" -gt "$b" ]

-ge

大於等於

if [ "$a" -ge "$b" ]

-lt

小於

if [ "$a" -lt "$b" ]

-le

小於等於

if [ "$a" -le "$b" ]

<

小於(在雙括號中使用)

(("$a" < "$b"))

<=

小於等於(在雙括號中使用)

(("$a" <= "$b"))

>

大於(在雙括號中使用)

(("$a" > "$b"))

>=

大於等於(在雙括號中使用)

(("$a" >= "$b"))

 

字符串比較

=

等於

if [ "$a" = "$b" ]

==

等於

if [ "$a" == "$b" ]

=等價.

 

==比較操作符在雙中括號對和單中括號對中的行為是不同的.

  1 [[ $a == z* ]]    # 如果$a以"z"開頭(模式匹配)那么結果將為真
  2 [[ $a == "z*" ]]  # 如果$a與z*相等(就是字面意思完全一樣), 那么結果為真.
  3 
  4 [ $a == z* ]      # 文件擴展匹配(file globbing)和單詞分割有效. 
  5 [ "$a" == "z*" ]  # 如果$a與z*相等(就是字面意思完全一樣), 那么結果為真. 
  6 
  7 # 感謝, Stephane Chazelas
!=

不等號

if [ "$a" != "$b" ]

這個操作符將在[[ ... ]]結構中使用模式匹配.

<

小於, 按照ASCII字符進行排序

if [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ]

注意"<"使用在[ ]結構中的時候需要被轉義.

>

大於, 按照ASCII字符進行排序

if [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

注意">"使用在[ ]結構中的時候需要被轉義.

 

-z

字符串為"null", 意思就是字符串長度為零

 

-n

字符串不為"null".

 

-n使用在中括號中進行條件測試的時候, 必須要把字符串用雙引號引用起來,這才是安全的行為. 如果采用了未引用的字符串來使用! -z, 甚至是在條件測試中括號中只使用未引用的字符串的話, 一般也是可以工作的, 然而, 這是一種不安全的習慣. 習慣於使用引用的測試字符串才是正路.

#!/bin/sh
a=1
#if [ "$a" -eq "$1" ]; then  # ok
if [ "$1" -eq "$a" ] # ok
#if[ "$1" -eq "$a" ]  # not ok
then
    echo "11 var1 == a"
fi


if [ "$1" == "$a" ]; then # ok
#if [ $1 == $a ]; then # can do but not a good style
#if [ $1==$a ]; then # not ok
    echo "22 var1 == a"
fi

 

 

參考: 1. Shell腳本中判斷輸入參數個數的方法 http://www.jb51.net/article/56549.htm 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM