Shell 脚本:仅当定义了环境变量时,如何在 env 变量前添加前缀?

Shell 脚本:仅当定义了环境变量时,如何在 env 变量前添加前缀?

鉴于command这需要 flag --flag。仅当标志的值作为环境变量提供时,我们才希望插入此标志VALUE

我尝试了以下方法:

echo "command ${X+--flag ${VALUE}}"
VALUE=1
echo "command ${X+--flag ${VALUE}}"'

参考:

答案1

command ${VALUE:+--flag "$VALUE"}

如果变量已定义且非空,则这将command与选项--flag及其选项参数一起运行。如果变量为空或未定义,则运行时不带参数。"$VALUE"VALUEcommand

zshshell 中,不会对不带引号的扩展执行分词,您必须设置SH_WORD_SPLITshell 选项 ( ),以兼容模式 ( )setopt SH_WORD_SPLIT运行 shell ,或使用shzsh --emulate sh

command ${=VALUE:+--flag "$VALUE"}

...确保当设置为非空值时--flag"$VALUE"作为两个单独的参数传递。VALUE

如果您希望在已定义但为空时添加选项,请删除:参数替换中的。--flagVALUE

相关内容