为什么我的循环变量在1次迭代后不存活?

时间:2012-04-19 15:24:47

标签: bash

我有这段代码

for p in "abra/cadabra reach/out"
do
        r="$HOME/x/$p"
        echo $r
done

但它只会产生这个:

/Users/terrencemonroebrannon/x/abra/cadabra reach/out

/Users/terrencemonroebrannon/x/abra/cadabra /Users/terrencemonroebrannon/x/reach/out

正如我所料。

2 个答案:

答案 0 :(得分:5)

您已将两个项目放在引号中,bash将其解释为单个标记。这就是引用的目的。如果你要删除引号,你会得到你描述的行为:

for p in abra/cadabra reach/out
do
        r="$HOME/x/$p"
        echo $r
done

给我:

/Users/lars/x/abra/cadabra
/Users/lars/x/reach/out

答案 1 :(得分:2)

bash会将"abra/cadabra reach/out"视为一个令牌 不需要报价。

for p in abra/cadabra reach/out
do
        r="$HOME/x/$p"
        echo $r
done