for 循环用于重复一组命令
语法:
for var in list do commands done
带有单引号的参数可以通过转义字符\ 或者双引号来定义用到单引号的值
#!/bin/bash for test in I don\'t know if "this'll" work do echo "word:$test" done
for循环读取变量时 可以通过 var=$var"var_new" 来向$var变量中已有变量添加(或者说是拼接)了一个值。
#!/bin/bash # using a variable to hold the list list="Alabama Alaska Arizona Arkansas Colorado" list=$list" Connecticut" for state in $list do echo "Have you ever visited $state?" done $ ./test4 Have you ever visited Alabama? Have you ever visited Alaska? Have you ever visited Arizona? Have you ever visited Arkansas? Have you ever visited Colorado? Have you ever visited Connecticut? #拼接的值
还可以从命令读取值
$ cat test5 #!/bin/bash # reading values from a file file="states" for state in $(cat $file) do echo "Visit beautiful $state" done $ cat states Alabama Alaska Arizona Arkansas Colorado Connecticut Delaware Florida Georgia Mian Xian $ ./test5 Visit beautiful Alabama Visit beautiful Alaska Visit beautiful Arizona Visit beautiful Arkansas Visit beautiful Colorado Visit beautiful Connecticut Visit beautiful Delaware Visit beautiful Florida Visit beautiful Georgia Visit Mian Visit Xian
这个例子在命令替换中使用了cat命令来输出文件states的内容。你会注意到states文件中每一行有一个州,而不是通过空格分隔的。for命令仍然以每次一行的方式遍历了cat命令的输出,假定每个州都是在单独的一行上。但这并没有解决数据中有空格的问题。如果你列出了一个名字中有空格的州,for命令仍然会将每个单词当作单独的值。