我有一个shell函数,我想检查用户是否传入了第二个变量。我试过这个,但它似乎没有工作
function dash() {
if [ -z "$2" ]; then
open dash://$1:$2;
else
open dash://$1;
fi
}
基本上,我想说第二个参数$2
是否传递给' X'否则做' Y'
答案 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
}
这个网站是一个很好的信息:
答案 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
,否则会扩展为空字符串。