我们来个简单的 for loop
#!/bin/bash
for i in `seq 1 10`;
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
bash 脚本中的 AFAIK 分号使 shell 同步执行当前命令,然后转到下一个命令。按回车键实际上是一样的,只是它不允许您输入以下命令,立即刷新缓冲区。
那么为什么shell不能解释以下行
for i in `seq 1 10`; do; echo $i; done
Run Code Online (Sandbox Code Playgroud)
这for loop
实际上是如何工作的?
use*_*274 55
手册页中for
循环的语法bash
是
for name [ [ in [ word ... ] ] ; ] do list ; done
Run Code Online (Sandbox Code Playgroud)
分号可以用回车代替,如bash
手册页的其他地方所述:“一个或多个换行符的序列可能出现在列表中,而不是分号来分隔命令。”
然而,反过来就不是这样了。您不能随意用分号替换换行符。只要您遵守上述语法规则并且不在 之后插入额外的分号,您的多行脚本就可以转换为单行do
:
for i in `seq 1 10`; do echo $i; done
Run Code Online (Sandbox Code Playgroud)
dr_*_*dr_ 30
后面的分号do
是错误的,不应该出现。
以下工作正常:
for i in `seq 1 10`; do echo $i; done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
131763 次 |
最近记录: |