我的一个bash shell给了我不同于其他人的行为。我不知道改变了什么设置,但请查看:
hersh@huey$ for f in $(echo a b c); do echo foo $f; done
foo a
foo b
foo c
hersh@huey$ logout
Connection to huey closed.
hersh@spf$ for f in $(echo a b c); do echo foo $f; done
foo a b c
在主机huey上,“for”循环完成了我的预期:它在字边界上分开。在主机spf上,“for”循环没有在字边界上分割,它将整个事物视为单个项目。同样,如果我使用$(ls),它会将整个大型多线程视为单个项目,并在第一行前面打印“foo”。
在两台主机上我正在运行bash。在主机spf上的其他bash shell中,它也可以正常工作(在单词边界上拆分)。有什么可以改变的?两者都运行相同版本的bash(“4.2.25(1)-release(x86_64-pc-linux-gnu)”)。字符是相同的,因为我两次用同一来源的鼠标复制粘贴for循环命令行。
谢谢!
答案 0 :(得分:4)
检查您的$ IFS
mogul@linuxine:~$ for f in $(echo a b c); do echo foo $f; done
foo a
foo b
foo c
mogul@linuxine:~$ export IFS=SOMETHINGBAD
mogul@linuxine:~$ for f in $(echo a b c); do echo foo $f; done
foo a b c
mogul@linuxine:~$
并查看此处的手册bash Word Splitting