这些Bash间接方法之间的区别是什么?

时间:2018-05-25 01:29:32

标签: bash shell

当我偶然发现这种不一致时,我正在探索在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,则在两种情况下都可以正常工作。

0 个答案:

没有答案