我有以下bash脚本:
$ echo $(dotnet run --project Updater)
UPDATE_NEEDED='0' MD5_SUM="7e3ad68397421276a205ac5810063e0a"
$ export UPDATE_NEEDED='0' MD5_SUM="7e3ad68397421276a205ac5810063e0a"
$ echo $UPDATE_NEEDED
0
$ export $(dotnet run --project Updater)
$ echo $UPDATE_NEEDED
'0'为什么$UPDATE_NEEDED在第三个命令中是0,而在第五个命令中是'0'?
我需要做什么才能使它简单地设置为0?相反,使用UPDATE_NEEDED=0并不是一种选择,因为其他一些变量可能包含一个空格(我想乐观地引用它们,以便让它正确地解析空间)。
而且,这是一个有点XY问题。如果有人知道从可执行文件导出多个变量的更简单的方法,然后在bash脚本中使用,那么这也是有用的。
发布于 2022-01-18 13:36:31
关于Glenn的回答,我想说的是:
export UPDATE_NEEDED='0'的内容时,这与export UPDATE_NEEDED=0是100%相同的。Bash使用引号来解析命令表达式,但它们随后会被立即丢弃。它们的唯一目的是防止分词,避免不得不转义特殊字符。同样,就Bash而言,代码片段'foo bar'与foo\ bar完全相同:两者都导致空间被视为文字而不是单词拆分器。eval时,传递给eval的命令行参数被视为Bash代码,因此遵循与常规Bash代码相同的展开规则,这将导致与(1)相同的结果。https://stackoverflow.com/questions/70755172
复制相似问题