#for
#city是一个变量,后面连续的几个字符串是要访问的,不同的字符串用空格隔开
for city in beijing tianjing chongqing
do echo I have been to $citydone
这就是for的结构,但是这里有一些问题需要解决。
问题①字符串中带单引号
for test in I don't this'll work
do echo $testdone
解决方法:对单引号使用转义字符
问题②访问的字符串用空格隔开了
for test in the test1 test2 the test3
do echo $testdone
解决方法:给那个有空格的字符串加上双引号
for test in "the test1" test2 "the test3"
do echo $testdone
读取一个变量(但是这里解决不了空格的问题)
list="test1 test2 test3"
for test in $list
do echo $test
done
读取一个文件,这里要事先创建一个名称为fortest的文件。
文件的内容里空格与换行都是分隔字符串的符号。
文件里面不需要解决引号的问题。
file="fortest"
for test in `cat $file`
do echo $test
done
字段分隔符是可以自己改变的,这个值保存在变量IFS中,文件里面只使用'/n'作为分隔符就可以解决很多问题了。
OLDIFS=$IFS
IFS=$'\n'
file="fortest"
for test in `cat $file`
do echo $test
done
IFS=$OLDIFS
这里首先定义一个变量把以前的IFS保存起来,然后改变他为想要的值,这个值使用完毕之后把他还原。
for访问目录
for file in /root/*
do echo $file
done
这样可以遍历root文件夹下的所有文件以及文件夹的名称,可以在循环里面对这些名称使用一些命令,比如判断是否是一个文件夹,或者是否是一个文件。等。
也可以使用C式的for命令,但是跟前面一样,需要双圆括号。
for(( i=0;i<10;i++ ))
do echo $i
done