我的一个 bash shell 给了我与其他 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-loop 命令行。
谢谢!