Linux for循环的分割符号,shell编程,循环语句for,字段分格符IFS

for命令:

for  var  in  list

do

command

done

例:

for  var  in  one  two  three  four

do

echo $var

done

注意1:var的值会保持到脚本的最后,var的值为循环列表的最后一个值。

注意2:列表中的每个值是以空格区分的,可以用双引号包含空格或单引号的值。

读取的list也可以是一个变量:

list="one  two  three"

list=$list  "four"

for  var  in  $list

do

command

done

从命令读取值:

for  var  in  $( cat  demo.txt)

do

echo $var

done

demo.txt文件中可以是一行一行的数据,但是每行之间的单词有空格也会当成两个列表值

更改字段分格符:

IFS        环境变量,内部字段分隔符,可以通过修改这个环境变量修改解析数据的规则

IFS.OLD=IFS      修改之前先保存默认值

IFS=$'\n':;"        这个值会将换行符、冒号、分号、双引号作为字段分隔符,如何使用IFS字符解析数据没有任何限制。

例:

IFS.OLD=IFS

IFS=$'\n'

for  var  in  $( cat demo.txt )

do

echo var;

done

IFS=IFS.OLD

这样只有换行符才会被解析为新数据的开始

用通配符读取目录:

for  file  in  $HOME/*   /home/Richard

do

if  [ -d  "$file" ]  ;  then

echo  "$file  is  a  dirctory"

elif [ -f  "$file" ] ; then

echo  "$file  is  a  file"

fi

done

注意:在in后面可以使用多个目录通配符。

注意:为防止目录或文件名有空格,在输出时要用双引号包含变量,例:"$file"。

C语言风格的for命令:

for  ((  a = 1 ;  a < 10 ; a++  ))

do

echo "The  var  is  $i ";

done

注意:1.等于号两遍可以有空格。2.括号中的变量不以美元符号开头。

遍历/etc/passwd示例:

IFS.OLD=IFS

IFS=$'\n'

for  line  in  $( cat  /etc/passwd )

do

echo  "line  $line"

IFS=:

for  word  in  $line

do

echo "word  $word"

done

done

查找可执行命令示例:

所有可执行的命令都放在$PATH定义的中,所以只要在这些目录中查找可执行命令就行了

IFS.OLD=IFS

IFS=:

for directory in $PATH

do

echo "current directory id  $directory"

for file in $directory/*

do

if [ -x $file ]; then

echo "The file $file can execute"

else

echo "The file $file cat not execute"

fi

done

done

总结:

for  var  in  1 2 3 4 5               普通列表

for  var  in  $( cat demo.txt )  命令替换

for  var  in  /root/bin/*           使用通配符

for  ((  i = 0 ; i < 10 ; i++  ))    括号内同C语言

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值