添加默认为bash脚本变量

时间:2015-07-02 10:48:29

标签: bash command-line-arguments

我有一个使用$1来处理命令行参数的bash脚本。

即使没有给出命令行参数,我也想修改这个脚本。在这种情况下,我希望脚本使用默认值。

我不知道该怎么做;基本上我想我需要用我自己的变量替换$1并在程序开头有一行检查是否为$1传递了值,如果没有使用默认值I&# 39; ll提供。但我不知道它的语法。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

使用parameter expansion

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