2013-09-24 38 views
1

我有一個shell函數,我想檢查用戶是否傳遞了第二個變量。我曾經試過,但它似乎並不奏效測試用戶是否傳入了shell變量

function dash() { 
    if [ -z "$2" ]; then 
     open dash://$1:$2; 
    else 
     open dash://$1; 
    fi 
} 

基本上,我想如果第二個參數$2在做傳遞給說「X」代勞「Y」

回答

0

只要做到:

function dash() { 
    open dash://$1${2+:}$2 
} 

如果設置了$2,則${2+:}將擴展爲:,否則爲空字符串。

+0

heh。就像我孩子會說的那樣,「快樂!」 – jthill

2

$#給出數傳遞

if [ $# -eq 2 ] 
then 
    echo "2 arguments passed" 
fi 
0

參數的功能,可以通過這個

function dash() { 
    if [ "$#" -gt 1 ]; then 
     open "dash://$1:$2" 
    else 
     open "dash://$1" 
    fi 
} 
固定210
  • 您可以使用$#來檢查參數的數量。
  • 引用你的論點來保存可能的空間。

,並調用你的函數,引號,以及時:

dash "first argument" "second argument" 

或者

dash "first argument" 

如果你這樣做:

first='first argument' 
dash $first 

會有兩個參數(第一和參數),而不是一個。

1

你只是將它反向 - 空字符串的「-z」測試。所以,只要將它,或者使用 「-n」(NOT NULL):

function dash() { 
    if [ -n "$2" ]; then 
     open dash://$1:$2; 
    else 
     open dash://$1; 
    fi 
} 

這個網站是一個很好的瞭解更多信息:

http://tldp.org/LDP/abs/html/comparison-ops.html

相關問題