小编bas*_*sos的帖子

在同一命令上组合 bash 变量和参数扩展

在 bash shell 中,我尝试了以下 2 个产生不同效果的命令:

$ a=`echo UPDATED` echo ${a:-DEFAULT}
DEFAULT

$ a=`echo UPDATED`; echo ${a:-DEFAULT}
UPDATED
Run Code Online (Sandbox Code Playgroud)

无法在一个命令中获得结果(第一种情况)?如果不是,为什么?

引用该男子的一些话:

一个简单的命令是一系列可选的变量赋值,后跟空格分隔的单词和重定向,并由控制运算符终止。

拆分成单词后在命令行上进行扩展。

为清楚起见,实际情况涉及提供由事件处理程序执行的二进制文件。二进制路径来自配置文件,如果配置文件中未定义,则回退到默认值。

更接近真实情况的是这个片段,它被事件处理程序调用:

a=`getConfigVariable "myExec"` ${a:-/opt/bin/default}
Run Code Online (Sandbox Code Playgroud)

其中 getConfigVariable "myExec" 返回配置变量 "myExec",如果未定义,则返回空字符串。例如:

$ getConfigVariable "myExec"
/opt/bin/updated
Run Code Online (Sandbox Code Playgroud)

bash

3
推荐指数
1
解决办法
251
查看次数

标签 统计

bash ×1