echo "$\{var}"
echo "Substitute the value of var."
echo "$\{var:-word}"
echo "If var is null or unset, word is substituted for var. The value of var does not change."
echo "2- $\{var:=word}"
echo "If var is null or unset, var is set to the value of word."
echo "$\{var:?message}"
echo "If var is null or unset, message is printed to standard error. This checks that variables are set correctly."
echo "$\{var:+word}"
echo "If var is set, word is substituted for var. The value of var does not change."
9 回答
非常接近你发布的内容,实际上:
或者,也将
default
分配给VARIABLE
:对于命令行参数:
如果没有传递这样的参数,则为
VARIABLE
分配传递给脚本的第一个参数的值或DEFAULTVALUE
的值 .如果变量相同,那么
如果未定义,则将DEFAULT_VALUE分配给VARIABLE . 双引号可防止通配和分词 .
另请参阅Bash手册中的第3.5.3节,Shell Parameter Expansion .
即使你可以像默认值一样使用另一个变量的值
有一个文件
defvalue.sh
运行
./defvalue.sh first-value second-value
输出并运行
./defvalue.sh first-value
输出见3.5.3下的here(shell参数扩展)
所以在你的情况下
然后就是更简洁地表达你的'if'结构的方式:
FWIW,您可以提供如下错误消息:
这会显示如下消息并退出代码1:
一切更完整的例子:
输出:
$ACTION
获取第一个参数的值,如果为空则退出$DIRNAME
是第二个参数,默认为当前目录$OUTPUT_DIR
是第3个参数,或$HOMEDIR
(如果已定义),否则为/tmp
. 这适用于OS X,但我是便携式的 .回答你的问题和所有变量替换
这是一个例子
将其保存为script.sh并使其可执行 . 没有params运行它
用param运行它