【发布时间】:2018-06-12 17:19:51
【问题描述】:
当我在 cygwin bash shell 中键入以下命令时:
for i in $(ls) do echo $i done
我得到一个“>”,要求我继续输入,而不是预期的行为。为什么?
【问题讨论】:
-
Don't parse
ls;for i in *; do .... -
这种方法太糟糕了,哈哈
当我在 cygwin bash shell 中键入以下命令时:
for i in $(ls) do echo $i done
我得到一个“>”,要求我继续输入,而不是预期的行为。为什么?
【问题讨论】:
ls; for i in *; do ....
你需要将你的 for、do 和 done 语句分开。试试这个:
for i in $(ls); do echo $i; done
您还可以用换行符分隔语句。例如:
cygwin$ for i in $(ls)
> do
> echo $i
> done
【讨论】:
您的for 循环仍在等待终止值列表的分号或换行符。到目前为止,您的循环将i 设置为ls 生成的单词列表、单词do、单词echo、current 值扩展生成的单词i 和 done 这个词。
>就是所谓的二级提示符,表示shell还在等待输入完成for启动的命令。
【讨论】: