shell特殊用法

特殊用法一  while

语法格式    

    while read LINE; do

    循环体

    done < /PATH/FROM/SOMEFILE

        功能:依次读取/PATH/FROM/SOEMFILE文件中的每一行,且将此行赋值给LINE变量中

  示例:扫描/etc/passwd文件每一行,如发现GECOS字段为空,则填充用户名和单位电话为123,并提示该用户的GECOS信息修改成功

#!/bin/bash
#
FILE=/etc/passwd
while read LINE; do
  GE=`echo $LINE | cut -d: -f5`
  USER=`echo $LINE | cut -d: -f1`
  if [[ -z $GE ]]; then
    usermod -c "${USER}123" $USER
    echo "Modify $USER finished.."
  else
    echo "$USER can't modify"
  fi

done < $FILE

unset FILE GE USER





特殊用法二 for

语法格式

    for ((控制变量初始化;条件判断表达式;控制变量的修正表达式)); do

    循环体

    done

        功能:赋值判断和修正条件都是(())中完成,满足判断表达式即执行一次循环体,结束会先进行控制变量修正运算,而后再做条件判断。

        此用法和while很相似,完全可以完全替换,但是此用法更适合于数字的计算。

  示例:计算1-10之和

#!/bin/bash

declare -i sum=0
for (( i=1; i<=10; i++ )); do
  sum=$[sum+i]
done

echo $sum

unset sum i




特殊用法三  select

语法格式

    select variable in list; do

    循环体命令

    done

        功能:select循环主要用于创建菜单,并显示PS3 提示符,且用户输入被保存在内置变量REPLY 中。一般与case同用,exit退出循环

  示例:制作一个菜单,展示出商品及其价格,如果输入错误,提示错误信息并退出。

#!/bin/bash

PS3="What would you like:"
select menu in noodles dumpling rice; do
  case $menu in
    noodles)
      echo "Your choice is $REPLY,10$"
      ;;
    dumpling)
      echo "Your choice is $REPLY,15$"
      ;;
    rice)
      echo "Your choice is $REPLY,20$"
      ;;
    *)
      echo "Your choice is error.."
      break
    ;;
  esac
done


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值