美文网首页
07_02_bash脚本编程之六 使用脚本选项及组合条件测试

07_02_bash脚本编程之六 使用脚本选项及组合条件测试

作者: 冰海之洋 | 来源:发表于2018-03-02 10:22 被阅读0次

写一个脚本:

1、添加10个用户user1到user10,密码同用户名,但要求只有用户不存在情况下才能添加

#!/bin/bash

#

for I in {1..10}; do

        if id user$I &> /dev/null;then

          echo "user$I exists."

        else

          useradd user$I

          echo user$I | passwd --stdin user$I &> /dev/null

          echo "add user user$I finished."

        fi  

done

扩展:

接收一个参数:

add:添加用户 user1..user10

del:删除用户 user1..user10

其他退出

#!/bin/bash

#           

if  [ $# -lt 1 ]; then

        echo "Usage: demo ARG"

        exit 7

fi      

if [ $1 == '--add' ]; then

        for I in {1..10};do

          if id user$I &> /dev/null; then

            echo "user$I exists."

          else

            useradd user$I 

            echo user$I | passwd --stdin user$I &> /dev/null

            echo "add user user$I finished."

          fi

        done

elif [ $1 == '--del' ]; then

        for I in {1..10}; do

          if id user$I &> /dev/null; then

            userdel -r user$I

            echo "delete user$I finished."

           else

            echo "no user$I"

           fi

        done

else

        echo "unknow arg"

        exit 8

fi

模拟选项和参数(逗号隔开)添加用户

#!/bin/bash

#

if [ $1 == '--add' ]; then

  for I in `echo $2 | sed 's/,/ /g'`;do

    if id $I &> /dev/null; then

      echo "$I exists."

    else

      useradd $I

      echo $I | passwd --stdin $I &> /dev/null

      echo "add $I finished."

    fi  

  done

elif [ $1 == '--del' ]; then

  for I in `echo $2 | sed 's/,/ /g'`; do

    if id $I &> /dev/null; then

      userdel -r $I

      echo "delete $I finished."

    else

      echo "$I not exists."

    fi  

  done

elif [ $1 == '--help' ]; then

  echo "Usage:demo.sh --add USER1,SUER2... | --del USER1,USER2... | --help"

else

  echo "unkonw options"

fi

一、条件测试内容回顾

   1、整数测试

       -le, -lt, -ge, -gt, -eq, -ne

   2、字符测试

       ==, !=, >, <, -n, -z

   3、文件测试

       -e, -f, -d, -r, -w, -x

二、组合测试条件

   1、-a:与关系;

   2、-o:或关系;

   3、!:非关系;

       如:给定参数大于1小于3,如何表达:

           if [ $# -gt 1 -a $# -le 3]

       或:  if [ $# -gt 1] && [ $# -le 3 ]

练习3,写脚本:

   传递一个参数(单字符就行)给脚本,如参数为q、Q、quit或Quit,就退出脚本;

   否则,就显示不能识别的参数;

# vim quit.sh

#!/bin/bash

#

if [ $1 == 'q' -o $1 == 'Q' -o $1 == 'quit' -o $1 == 'Quit' ];then

       echo "Quiting..."

       exit 0

else

       echo "Unknow Argument."

       exit 1

fi

三、运算符

   1、SUM=$[$SUM+$I]相当于let SUM+=$I;

       let I+=1相当于let I++

   2、取模

       -= let I-=相当于let I--

       *=

       /=

       %=

练习4,写脚本:

   计算100以内所有奇数和所有偶数的和,并分别显示;

# vim sum.sh

#!/bin/bash

#

declare -i SUM1=0

declare -i SUM2=0

for I in `seq 1 100`;do

       if [ $[$I%2] == 0 ];then

               SUM1=$[$SUM1+$I]

       else

               SUM2=$[$SUM2+$I]

       fi

done

echo "The even sum is $SUM1."

echo "The obb sum is $SUM2."

相关文章

网友评论

      本文标题:07_02_bash脚本编程之六 使用脚本选项及组合条件测试

      本文链接:https://www.haomeiwen.com/subject/rrwoxftx.html