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..."