当前位置:  操作系统/服务器>linux

shell脚本编程之for语句、if语句使用介绍

    来源: 互联网  发布时间:2014-10-14

    本文导语:  上部: 面向过程:顺序执行选择执行: if, case循环执行: for, while, until 一、for语句   格式:     for 变量 in 列表;do        语句1;        语句2;        ...     done    例1、写一个脚本,添加10个用户,并让每个用户...

上部:

面向过程:
顺序执行
选择执行: if, case
循环执行: for, while, until

一、for语句

  格式:
     for 变量 in 列表;do
        语句1;
        语句2;
        ...
     done
   例1、写一个脚本,添加10个用户,并让每个用户的密码同用户名】

代码如下:

       #!/bin/bash
       for I in {1..10}; do
          useradd user$I;
       echo user$I | passwd --stdin user$I
       done

  例2、写一个脚本,分别显示 /tmp/1.dir /tmp/2.dir /tmp/3.dir三个文件的时间戳,并将这三个文件被修改的时间改为201003030303.03

代码如下:

        #!/bin/bash
        for Dir in /tmp/1.dir /tmp/2.dir /tmp/3.dir; do

           stat $Dir
           touch -m -t 201003030303.03 $Dir
           stat $Dir
        done

bash的变量类型:
    本地变量
    局部变量
    环境变量
    位置变量 :$1、$2、$3、$4....
    特殊变量:
        $?: 用于保存刚刚执行的命令的状态返回值;
0:成功执行;1-255:失败,1,2,127
可以使用exit命令在脚本中自定义脚本执行状态返回值;如果不定义,脚本执行状态返
回值取决于脚本执行结束前最后执行的那个语句的状态;

       $@, $*: 所有位置参数;
       $#: 位置参数的个数;
       $0: 脚本名称

二、if语句

1、单分支if语句:
      格式:
          if 条件; then
语句1
语句2
  ...
           fi
     例3、写一个脚本,实现如下功能: 如果用户存在,就说明其存在;

代码如下:

#!/bin/bash
   UserName=user1
 if grep "^$UserName>" /etc/passwd &> /dev/null; then
    echo "$UserName exists."
 fi

    例4、写一个脚本,实现如下功能:如果设备/dev/sda3已经挂载,就显示其挂载点;
代码如下:

#!/bin/bash
Device='/dev/sda3'
if mount | grep "^$Device" &> /dev/null; then
   mount | grep "/dev/sda3" | cut -d' ' -f3
fi

例5、写一个脚本,实现如下功能: 如果/etc/rc.d/rc.sysinit中有空白行,就显示其空白行数;

代码如下:

    #!/bin/bash
     File='/etc/rc.d/rc.sysinit'
    if grep "^$" $File &> /dev/null; then
     grep "^$" $File | wc -l
    fi

2、双分支if语句:

  格式:
   if 条件; then
 语句1
 语句2
 ...
else
 语句1
 语句2
 ...
fi

   例6、写一个脚本,实现如下功能:

     如果设备/dev/sda3已经挂载,就显示其挂载点;否则,就说明其未挂载或设备不存在;

代码如下:

        #!/bin/bash
          Device='/dev/sda3'
        if mount | grep "^$Device" &> /dev/null; then

           mount | grep "/dev/sda3" | cut -d' ' -f3
        else
          echo "$Device not mounted or not exist."
        fi

3、多分支if语句:
    格式:
    if 条件1; then
 语句1
 语句2
 ...
elif 条件2; then
 语句1
 语句2
 ...
elif 条件3; then
 语句1
 语句2
 ...
else
 语句1
 语句2
 ...
fi
   例7、写一个脚本:
      判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor id一行中。
      如果其生产商为GenuineIntel,就显示其为Intel公司;
      如果其生产商为AuthenticAMD,就显示其为AMD公司;
     否则,就显示无法识别;

代码如下:

    #!/bin/bash
       Vendor=`grep "vendor_id" /proc/cpuinfo | uniq | cut -d: -f2`
       if [[ $Vendor =~ [[:space:]]*GenuineIntel$ ]]; then

         echo "intel"
       elif [[ $Vendor =~ [[:space:]]*AuthenticAMD$ ]]; then
         echo "AMD"
       else
         echo "Unknown"
       fi

下部:

一、bash条件测试:
     整数测试   [ expression ]
     字符测试     [[ expression ]]
     条件测试     test expression   test 根据表达式求值的结果返回 0(真)或 1(假)

1、整数测试:数值比较
         -gt   大于
         -ge   大于或等于
         -eq   等于
         -lt   小于
         -le   小于或等于
         -ne    不等于

例1:写一个脚本,生成两个随机数,比较其大小;显示大数;

bash有个内置变量:$RANDOM

代码如下:

#!/bin/bash
  A=$RANDOM
  B=$RANDOM
if [ $A -ge $B ]; then
  echo "Max number is $A."
else
  echo "Max number is $B."
fi

例2:写一脚本,随机生成一个整数,判定,显示其奇偶性;

代码如下:

#!/bin/bash
#
A=$RANDOM
if [ $[$A%2] -eq 0 ]; then
  echo "$A: Even"
else
  echo "$A: Odd"
fi

例3、写一个脚本:

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

代码如下:

#!/bin/bash
EvenSum=0
OddSum=0
for I in {1..100}; do
  if [ $[$I%2] -eq 0 ]; then
    EvenSum=$[$EvenSum+$I]
  else
    OddSum=$[$OddSum+$I]
  fi
done
echo "EvenSum is: $EvenSum. OddSum is: $OddSum."

例4、计算N以内所有奇数的和以及所有偶数的和;分别显示之;N是通过参数传递过来的正整数;

代码如下:

#!/bin/bash
EvenSum=0
OddSum=0
for I in `seq 1 $1`;do
  if [ $[$I%2] -eq 1 ]; then
    OddSum=$[$OddSum+$I]
  else
    EvenSum=$[$EvenSum+$I]
  fi
done
echo "EvenSum: $EvenSum."
echo "OddSUm: $OddSum."
echo "Sum: $[$EvenSum+$OddSum]"

例5、写一个脚本,完成以下要求:

     1、添加10个用户user1, user2, ..., user10;但要先判断用户是否存在,不存在而后再添加;
     2、添加完成后,显示一共添加了几个用户;当然,不能包括因为事先存在而没有添加的;
     3、最后显示当前系统上共有多少个用户;

代码如下:

#!/bin/bash
Count=0
for I in {1..10}; do
  if id user$I &> /dev/null; then
    echo "user$I exists."
  else
    useradd user$I
    echo "Add user$I successfully."
    Count=$[$Count+1]
  fi
done
echo "Add $Count new users."
echo "Total users: `wc -l /etc/passwd | cut -d' ' -f1`."

2、bash字符测试:
       >: 大于
      


    
 
 

您可能感兴趣的文章:

  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 刚学Shell编程,问个关于Shell中if语句的问题
  • 一个shell语句中搞不懂的数字“2”,疑惑??
  • shell脚本问题 if语句
  • 如何获取shell脚本中某条语句的执行时间
  • shell中赋值语句的问题
  • 关于一个shell语句的问题
  • 求解Shell语句
  • 请教一段shell语句的作用
  • 请教个shell编程语句的问题。
  • bash shell 的if 语句
  • 请问一条shell语句,
  • 求原因:运行shell脚本语句未执行???
  • 简单问题:怎样在SHELL脚本里注释掉暂时不想执行的语句?
  • 问一段Shell脚本中的语句的意思
  • 问一条shell语句...
  • 请帮忙解释一条shell语句
  • help:一个小小shell 语句问题。。。
  • shell if语句的问题
  • 请教SHELL语句如何获取程序的安装路径?
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • Linux C编程一站式学习,高级shell Bash脚本编程指南,
  • 关于shell脚本编程
  • 高手帮帮忙,SHELL脚本编程~~~~~~~~~~~~~~~~~~
  • shell脚本编程 急需!谢谢!
  • shell脚本编程求解? 多谢
  • 帮忙啊,SHELL脚本编程。
  • 用shell脚本编程,怎么实现提取一个文件的一段内容,而且位置不定,行数不定
  • linux~shell编程~请教一个关于如何执行脚本的问题
  • [虚心请教]笔试遇到的shell脚本编程题。
  • 问一个很弱的shell脚本编程问题?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • shell脚本如何调用另外一个shell脚本的函数?
  • 急救!关于Shell脚本删除过期文件的问题,Shell脚本达人乱入
  • shell 脚本中命令别名在脚本外无法使用
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • 想用shell脚本定时执行另一个脚本
  • 一个shell执行另一个带参数shell脚本????????????
  • 如何给shell脚本加密,脚本中有密码。最好是比较直接的,不要说让用 shc
  • Shell脚本调用Sql脚本并向其中传递变量
  • 请问,Shell中如何执行另外一个Shell脚本?
  • 如何传递参数给linux shell 脚本(当脚本从标准输入而不是从文件获取时)
  • nohup执行的shell脚本,全局变量不能传递到脚本中使用吗?
  • cd、zip等命令在shell提示符下能执行,在shell脚本中为什么不能执行呢?
  • shell脚本问题 关于父脚本和子脚本的问题
  • shell脚本错误输出
  • 请教shell脚本启动程序
  • 关于shell脚本的。
  • 关于arm linux下的别名配置脚本如何在进入用户时让shell执行的问题,如bashrc,profile,.bash_profile等脚本,寻求高手解答
  • 高分请教关于Shell脚本执行中断问题?
  • linux shell脚本
  • shell脚本中执行python脚本并接收其返回值的例子
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • 请问“当前shell”和“子shell”的区别?
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3