linux命令行与shell脚本编程大全学习笔记之—shell脚本for命令学习

bash shell 默认会将空格,制表符,换行符当做字段分隔符。

for命令

基本格式:
for var in list
do
commands
done

或者

for var in list; do 
  commands
done
意义:定义变量var,并且用变量var遍历list参数定义的一系列值。

解释:var定义的变量可以在for循环之后(done)继续使用。
  
   list参数中,提供了迭代中要用的一些列值,
           for命令默以空格 or Table作为list列表中内容的分隔符。
           可以通过几种不同的途径来指定list列表中的值。
           在每个迭代中,变量VAR会包含列表中当前值。

           在do和done之间可以是一条或多条命令。

list列表中使用中的规则与特殊情况:

1、单引号的特殊处理,使用转义字符(反斜线)来将单引号转义
                                使用双引号来定义用到的单引号的值
eg:
for TEST in I don\'t know if "this'll" work
do
echo "word:$TEST"
done

2、list可以定义成变量
eg:
LIST1='Alabama Alaska Arizona Shanghai Beijing'
LIST2=$LIST1" Shenzhen"

for STAT in $LIST2
do
echo "Have you ever visited $LIST2" 
done

3、list参数可以定义成命令,即用反引号来执行任何能产生输出的命令,然后在for命令中使用该命令的输出;
eg:
FILE=/home/test/states
for STATE in `cat $FILE `
do
echo "Visit beautiful $STAT"
done
/home/test/states 文件内容:
beijing
shanghai 
tianjin
hebei
shenzhen
guangzhou

4、list参数中可以用通配符,如用for命令来自动遍历满是文件的目录
eg:
for FILE in /home/test/*
do
if [ -d "$FILE" ]
then
echo "$FILE is a directory"
elif [ -f "$FILE" ]
then
echo "$FILE is a file"
fi
done

在linux中文件名包含目录名和文件名是合法的,要容纳这种值,所以用双引号""将$FILE括起来。

4、bash用默认用空格、制表符来划分list列表中的每个值。如果单独的数据中有空格,那么也必须用双引号括起这些值。
eg:
for TEST in China Shanghai  "New York"  "New Mexico"
do
echo "Not going to $test"
done

5、在shell脚本中临时更改IFS环境变量的值来限制一下被bash shell当作字段分隔符的字符。

eg:
IFSOLD=$IFS #保留IFS变量的默认值
IFS=$'\n' #为IFS赋新值,使bash shell只能识别换行符。
使用冒号作为分隔符:IFS=:
使用换行符、冒号、分号和双引号作为字段分隔符IFS=$'\n:;'"
shell 代码部分,例如for命令等
  IFS=$IFSOLD           #恢复默认值

C语言风格的for命令 即for ((  ))

格式:
for (( variable assignment; condition; iteration process ))
do
commands
done
variable assignment :变量赋值
condition:条件
iteration process:迭代过程

eg:
for (( i=1;i<=10;i++ ))
do
echo "the next number is $i"
done

C语言风格的for命令允许定义多个变量
eg:
for (( a=1,b=10;a<=10;a++,b-- ))

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值