当我偶然发现这种不一致时,我正在探索在Bash中进行间接变量访问的不同方法(通过MacPorts在macOS上为4.4.19):
当IFS设置为'时,为什么下面的第二个循环只循环一次?'?
注意:IFS的影响在这里值得注意!
#!/usr/bin/env bash
PATH="foo:bar:baz"
var=PATH
IFS=':'
echo ${!var}
# returns foo bar baz
echo $(eval echo \$$var)
# also returns foo bar baz
for V in ${!var}; do
echo $V
done
# returns foo\nbar\nbaz\n
for V in $(eval echo \$$var); do
echo $V
done
# returns foo bar baz
如果用空格分隔项替换PATH
内容并删除IFS,则在两种情况下都可以正常工作。