【学习Linux】结构化命令——for

来源:互联网 发布:超级球星的体测数据 编辑:程序博客网 时间:2024/06/07 19:06
#!/bin/bash

#for

#city是一个变量,后面连续的几个字符串是要访问的,不同的字符串用空格隔开

for city in beijing tianjing chongqing

do
    echo I have been to $city

done

这就是for的结构,但是这里有一些问题需要解决。


问题①字符串中带单引号

for test in I don't this'll work

do
    echo $test

done

解决方法:对单引号使用转义字符


问题②访问的字符串用空格隔开了

for test in the test1 test2 the test3 

do
    echo $test

done

解决方法:给那个有空格的字符串加上双引号

for test in "the test1" test2 "the test3" 

do
    echo $test

done


读取一个变量(但是这里解决不了空格的问题)

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




0 0
原创粉丝点击