Shell的for循环

for循环对于批量管理服务器非常有用

for默认以所有的空白字符进行分隔:tab、空格、回车,去循环处理

for循环语法,分隔成几段就循环几次

for line in xxx yyy zzz; do

  #循环处理每个字符串,循环三次

done

输出jackin001到jackin100

for line in $(seq -w 100);do

  echo "jackin$line"

done

一个字符串一个字符串处理

for name in jackin justdoit xiaozhuang;do

  echo "name is $name"

done

循环读取文件中的每一行,输出结果有问题

for line in $(cat /etc/passwd);do

  echo "read it. line is $line"

done

怎么样解决上述问题?需要改变IFS内置变量

OLDIFS=$IFS

IFS=$'\n'

for line in $(cat /etc/passwd);do

  echo "read it. line is $line"

done

IFS=$OLDIFS

应用:使用for循环批量判断包是否已安装

for softpack in wget gcc pcre pcre-devel zlib zlib-devel;do

  soft_result=$(rpm -qa $softpack)

  if [ -z "$soft_result" ];then

    yum install -y $softpack

  else

    echo "$softpack is installed"

  fi

done

更多推荐

shell编程——Shell脚本之for循环