有条件命令行导出变量

有条件命令行导出变量

如果我跑

export COMMAND=nonexistentcommand && which $COMMAND >/dev/null || \
(echo "download filewithcommand.sh" && export COMMAND=./filewithcommand.sh)

echo "command: $COMMAND"

我明白了

download filewithcommand.sh
command: nonexistentcommand

但我认为应该是

download filewithcommand.sh
command: ./filewithcommand.

这句话有什么问题吗?

答案1

COMMAND设置为nonexistentcommand,这就是您得到的输出。普通的。

您确实设置了COMMAND一些其他值,但它位于子 shell 中(用括号括起来),因此它不会影响父 shell 的环境。您的意思是使用{大括号}(不分叉子外壳)而不是括号()

相关内容