shell脚本中如何设置变量的默认值
时间:2019-11-20 08:53:01 来源:igfitidea点击:
问题
在bash shell脚本中,如果一个变量值未定义,如何设置默认值?
如果定义了var并且不为空,则使用var,否则设置默认变量。
例如我的脚本需要一个参数作为输出。它可以是文本或html。我在脚本中将其设置如下
例如,假设脚本变量input的值是可以是txt或者md。这个值是由用户提供的。
input=
但是,如果用户忘记将参数传递给我的Shell脚本,就会可能导致后面的脚本出错。
因此,如果用户未传递任何参数,如何将input的默认值设置为txt?
解决方案
BASH,POSIX shell和Korn(所有版本)都支持参数扩展和测试。
例如如果定义了$1并且不为空,请使用$1;否则,将值设置为txt。
如下所示:
input=${1-txt} echo $input
或者
input=${1:-text} echo $input
在shell提示符下尝试另一个示例:
$ color=Red $ echo ${color-Blue} $ echo ${color:-Blue} $ unset color $ echo ${color-Green} $ echo ${color:-Green}
强制用户传递参数:
我们还可以通过下面的方法,要求用户必须提供参数,否则报错:
#!/bin/bash input=${1-txt} [ $# -eq 0 ] && { echo "Usage: ##代码## format" ; exit 1; } echo "input: $input..."