将默认值添加到 bash 脚本变量
Adding default to bash script variable
我有一个 bash 脚本,它使用 </code> 来处理命令行参数。</p>
<p>我想修改此脚本,使其即使在未提供命令行参数的情况下也能正常工作;在这种情况下,我希望脚本使用默认值。</p>
<p>我不知道该怎么做;基本上我认为我需要用我自己的变量替换 <code>
并在程序开头有一行检查是否为
传递了一个值,如果没有使用我的默认值我会提供。但我不知道它的语法。谁能帮帮我?
var=${1:-default}
从给定的link:
${parameter:-word}
If parameter is unset or null, the expansion of word is substituted.
Otherwise, the value of parameter is substituted.
看例子:
$ echo "$v"
$ t=${v:-hello}
$ echo "$t"
hello
$ v=2
$ t=${v:-hello}
$ echo "$t"
2
还要注意 ${var:-value}
和 ${var-value}
不一样:.
尝试:
echo "${1:-"my default"}"
在您的脚本中(例如 foo.sh
)查看 :-
修饰符的效果。
请注意,如果您将空字符串传递给脚本,默认值也会生效:
$ ./foo.sh ""
my default
所以你不能用这种方式区分空字符串和未给定的参数。
如果你需要区分,你应该依靠 $#
来告诉你参数的数量:
if [ $# = 0 ]
then
echo "my default"
else
echo ""
fi
=>
$ printf "[%s]\n" "$(./foo.sh "")"
[]
我有一个 bash 脚本,它使用 </code> 来处理命令行参数。</p>
<p>我想修改此脚本,使其即使在未提供命令行参数的情况下也能正常工作;在这种情况下,我希望脚本使用默认值。</p>
<p>我不知道该怎么做;基本上我认为我需要用我自己的变量替换 <code>
并在程序开头有一行检查是否为 传递了一个值,如果没有使用我的默认值我会提供。但我不知道它的语法。谁能帮帮我?
var=${1:-default}
从给定的link:
${parameter:-word}
If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.
看例子:
$ echo "$v"
$ t=${v:-hello}
$ echo "$t"
hello
$ v=2
$ t=${v:-hello}
$ echo "$t"
2
还要注意 ${var:-value}
和 ${var-value}
不一样:
尝试:
echo "${1:-"my default"}"
在您的脚本中(例如 foo.sh
)查看 :-
修饰符的效果。
请注意,如果您将空字符串传递给脚本,默认值也会生效:
$ ./foo.sh ""
my default
所以你不能用这种方式区分空字符串和未给定的参数。
如果你需要区分,你应该依靠 $#
来告诉你参数的数量:
if [ $# = 0 ]
then
echo "my default"
else
echo ""
fi
=>
$ printf "[%s]\n" "$(./foo.sh "")"
[]