将默认值添加到 bash 脚本变量

Adding default to bash script variable

我有一个 bash 脚本,它使用 </code> 来处理命令行参数。</p> <p>我想修改此脚本,使其即使在未提供命令行参数的情况下也能正常工作;在这种情况下,我希望脚本使用默认值。</p> <p>我不知道该怎么做;基本上我认为我需要用我自己的变量替换 <code> 并在程序开头有一行检查是否为 传递了一个值,如果没有使用我的默认值我会提供。但我不知道它的语法。谁能帮帮我?

使用parameter expansion:

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 "")"
[]