Shell脚本:如果未定义变量,请设置默认变量

时间:2020-01-09 10:37:23  来源:igfitidea点击:

如果定义了var并且没有空,请使用var,否则在Bash下设置默认变量。
例如我的脚本需要一个参数作为输出变量。
它可以是文本或html。
我在脚本中将其设置如下

output= # either text or html

但是,有时用户忘记将参数传递给我的Shell脚本,而输入逻辑失败。
那么,如果未传递任何参数,如何将默认值设置为text?

BASH,POSIX shell和Korn(所有版本)都支持参数扩展和测试。
例如如果定义了$1并且没有空,请使用$1;否则,设置为文本,输入:

output=${1-text} 
echo $output

或(请参阅下面的评论):

output=${1:-text} 
echo $output

在shell提示符下尝试另一个示例:

$ vech=Bus
$ echo ${vech-Car}
$ echo ${vech:-Car}
$ unset vech
$ echo ${vech-Car}
$ echo ${vech:-Car}

最后,这是一个示例脚本:

#!/bin/bash
output=${1-text}
echo "Setting output to $output..."

现在,按如下所示运行它:

$ ./script.sh html
$ ./script.sh text
$ ./script.sh

您还可以强制用户传递参数:

#!/bin/bash
output=${1-text}
[ $# -eq 0 ] && { echo "Usage: ##代码## format" ; exit 1; }
echo "Setting output to $output..."