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

Bash 为什么我的循环变量在1次迭代后不活动?,bash,Bash,我有这个密码 for p in "abra/cadabra reach/out" do r="$HOME/x/$p" echo $r done 但它只会产生这样的结果: /Users/terrencemonroebrannon/x/abra/cadabra reach/out 不是 正如我所料。bash将把abra/cadabra reach/out“视为一个标记。 不需要报价 for p in abra/cadabra reach/out do

我有这个密码

for p in "abra/cadabra reach/out"
do
        r="$HOME/x/$p"
        echo $r
done
但它只会产生这样的结果:

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

正如我所料。

bash将把
abra/cadabra reach/out“
视为一个标记。
不需要报价

for p in abra/cadabra reach/out
do
        r="$HOME/x/$p"
        echo $r
done
bash将把“abra/cadabra reach/out”视为一个标记。
不需要报价

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

您已经将两个项目放在引号中,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

您已经将两个项目放在引号中,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

还请注意,如果路径名中有空格,则需要单独引用:
对于“路径一”中的p“路径二”
还请注意,如果路径名中有空格,则需要单独引用:
对于“路径一”中的p“路径二”