2015-07-02 71 views
0

我有一个bash脚本,它使用$1来处理命令行参数。将默认值添加到bash脚本变量中

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

我不知道该怎么做;基本上我想我需要用我自己的变量替换$1,并在程序的开始处有一行检查是否为$1传递了一个值,并且如果不使用我将提供的默认值。但我不知道那个语法。谁能帮我?

回答

1

尝试:

echo "${1:-"my default"}" 

在您的脚本(例如foo.sh)看:-修改器的效果。

请注意,如果你在传递一个空字符串到你的脚本,也默认踢腿:

$ ./foo.sh "" 
my default 

所以你不能从一个不给定参数,这样区分空字符串。

如果你需要有一个区别,你应该依靠$#告诉你的参数个数:

if [ $# = 0 ] 
then 
    echo "my default" 
else 
    echo "$1" 
fi 

=>

$ printf "[%s]\n" "$(./foo.sh "")" 
[] 
+1

有趣的方法,做得好! – fedorqui

+3

实际上,我并不知道'$ {a-b}',但会认为它优于使用'$#'。 – Alfe

+0

@cdarke所以'[$#-eq 0]' – 123