测试用户是否传入了shell变量

时间:2013-09-24 18:38:50

标签: bash shell

我有一个shell函数,我想检查用户是否传入了第二个变量。我试过这个,但它似乎没有工作

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

基本上,我想说第二个参数$2是否传递给' X'否则做' Y'

4 个答案:

答案 0 :(得分:2)

$#给出了传递的参数数量

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

答案 1 :(得分:1)

你只需要向后 - “-z”测试空字符串。所以,只需交换它或使用“-n”(非空):

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

这个网站是一个很好的信息:

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

答案 2 :(得分:0)

该功能可由此

修复
function dash() {
    if [ "$#" -gt 1 ]; then
        open "dash://$1:$2"
    else
        open "dash://$1"
    fi
}
  • 您可以使用$#来检查参数的数量。
  • 引用您的论点以保留可能的空格。

在调用你的函数时,也要引用它:

dash "first argument" "second argument"

或者

dash "first argument"

如果你这样做:

first='first argument'
dash $first

会有两个参数(第一个和参数),而不是一个。

答案 3 :(得分:0)

只是做:

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

如果设置了${2+:},则:会扩展为$2,否则会扩展为空字符串。