ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **for in 循环** ~~~ for var in item1 item2 ... itemN do command1 command2 ... commandN done ~~~ ``` for loop in 1 2 3 4 5 do echo"The value is:$loop" done ``` 一个包含四个单词的列表,echo $str则会相应地执行4次 ~~~ for str in 'This is a string' do echo $str done ~~~ 列表可以由通配符产生。 ~~~ for i in *.png; do ls -l $i done ~~~ 也可以通过子命令产生。 ~~~ #!/bin/bash count=0 for i in $(cat ~/.bash_profile); do count=$((count + 1)) echo "Word $count ($i) contains $(echo -n $i | wc -c) characters" done ~~~ 上面例子中,`cat ~/.bash_profile`命令会输出`~/.bash_profile`文件的内容,然后通过遍历每一个词,计算该文件一共包含多少个词,以及每个词有多少个字符 `in list`的部分可以省略,这时`list`默认等于脚本的所有参数`$@`。但是,为了可读性,最好还是不要省略,参考下面的例子。 ~~~ for filename; do echo "$filename" done # 等同于 for filename in "$@" ; do echo "$filename" done ~~~ 在函数体中也是一样的,`for...in`循环省略`in list`的部分,则`list`默认等于函数的所有参数 ## **for 循环** `for`循环还支持 C 语言的循环语法。 ~~~ for (( expression1; expression2; expression3 )); do commands done ~~~ 通常情况下 shell 变量调用需要加 $,但是 for 的 (()) 中不需要,下面来看一个例子: ~~~ #!/bin/bash for((i=1;i<=5;i++));do echo "这是第 $i 次调用"; done; ~~~ 执行结果: ~~~ 这是第1次调用 这是第2次调用 这是第3次调用 这是第4次调用 这是第5次调用 ~~~