我有一个使用$1
来处理命令行参数的bash脚本。
即使没有给出命令行参数,我也想修改这个脚本。在这种情况下,我希望脚本使用默认值。
我不知道该怎么做;基本上我想我需要用我自己的变量替换$1
并在程序开头有一行检查是否为$1
传递了值,如果没有使用默认值I&# 39; ll提供。但我不知道它的语法。任何人都可以帮助我吗?
答案 0 :(得分:4)
var=${1:-default}
从给定的链接:
<强> $ {参数:-word} 强>
如果参数未设置或为null,则替换单词的扩展。 否则,参数的值将被替换。
查看示例:
$ echo "$v"
$ t=${v:-hello}
$ echo "$t"
hello
$ v=2
$ t=${v:-hello}
$ echo "$t"
2
另请注意${var:-value}
和${var-value}
不一样:What is the difference between ${var:-word} and ${var-word}?。
答案 1 :(得分:1)
尝试:
echo "${1:-"my default"}"
在您的脚本中(例如foo.sh
),以查看:-
修饰符的效果。
请注意,如果您将空字符串传递给脚本,默认情况下也会启动:
$ ./foo.sh ""
my default
所以你不能用这种方式区分空字符串和非给定参数。
如果你需要有这种区别,你应该依靠$#
告诉你参数的数量:
if [ $# = 0 ]
then
echo "my default"
else
echo "$1"
fi
=&GT;
$ printf "[%s]\n" "$(./foo.sh "")"
[]