我有一个 shell 函数,我想检查用户是否传入了第二个变量。我已经尝试过了,但它似乎不起作用
function dash() {
if [ -z "$2" ]; then
open dash://$1:$2;
else
open dash://$1;
fi
}
基本上,我想说如果第二个参数$2
传入 do 'X' else do 'Y'
$#
给出传递的参数数量
if [ $# -eq 2 ]
then
echo "2 arguments passed"
fi
你只是把它倒过来——“-z”测试一个空字符串。因此,只需交换它或使用“-n”(非空):
function dash() {
if [ -n "$2" ]; then
open dash://$1:$2;
else
open dash://$1;
fi
}
这个网站是一个很好的了解更多信息的网站:
该功能可以通过此修复
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
将有两个参数(第一个参数和参数),而不仅仅是一个。
做就是了:
function dash() {
open dash://$1${2+:}$2
}
${2+:}
扩展为:
if$2
设置,否则为空字符串。