Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / bash脚本之for语句if语句以及各种测试语句

bash脚本编程:面向过程:顺序执行选择执行: if, case循环执行: for, while, untilFor循环for 变量 in 列表; do语句1;语句2;...done 循环必须有退出条件;  单分支if语句:if 条件; then语句1语句2...fi单分支if语句例子1:写一个脚本,实现如下功能:如果用户存在,就说明其存在;#!/bin/bash#UserName=user1if grep "^$UserName>" /etc/passwd &> /dev/null; thenecho "$UserName exists."fi--------------------------------------------------------------------------------------------------------------------------#!/bin/bashUserName=user1if id $UserName &> /dev/null; thenecho "$UserName exists."fi2:写一个脚本,实现如下功能:如果用存在,就显示其UID和SHELL;#!/bin/bash#UserName=user1if id $UserName &> /dev/null; thengrep "^$UserName>" /etc/passwd | cut -d: -f3,7fi3:写一个脚本,实现如下功能:如果设备/dev/sda3已经挂载,就显示其挂载点;#!/bin/bash#Device="/dev/sda3"if mount | grep "^$Device" &> /dev/null; thenmount | grep "/dev/sda3" | cut -d" " -f3fi4:写一个脚本,实现如下功能:如果/etc/rc.d/rc.sysinit中有空白行,就显示其空白行数;#!/bin/bash#File="/etc/rc.d/rc.sysinit"if grep "^$" $File &> /dev/null; thengrep "^$" $File | wc -lfi 双分支if语句:if 条件; then语句1语句2...else语句1语句2...fi 练习:写一个脚本,实现如下功能:如果设备/dev/sda3已经挂载,就显示其挂载点;否则,就说明其未挂载或设备不存在;#!/bin/bash#Device="/dev/sda3"if mount | grep "^$Device" &> /dev/null; thenmount | grep "/dev/sda3" | cut -d" " -f3elseecho "$Device not mounted or not exist."fi 多分支if语句:语法格式:if 条件1; then语句1语句2...elif 条件2; then语句1语句2...elif 条件3; then语句1语句2...else语句1语句2...fi 写一个脚本:判断当前主机的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$ ]]; thenecho "intel"elif [[ $Vendor =~ [[:space:]]*AuthenticAMD$ ]]; thenecho "AMD"elseecho "Unknown"fi  bash条件测试:可独立执行的命令不需使用如下测试的方式;[ expression ] 括号内一般是需要测试的表达式 如:"$a" == "$b"[[ expression ]]test expressionbash命令有执行状态返回值;bash的变量类型:本地变量局部变量环境变量位置变量特殊变量:$?: 用于保存刚刚执行的命令的状态返回值;0:成功执行;1-255:失败,1,2,127可以使用exit命令在脚本中自定义脚本执行状态返回值;如果不定义,脚本执行状态返回值取决于脚本执行结束前最后执行的那个语句的状态;$@, $*: 所有位置参数;$#: 位置参数的个数;bash整数测试:expression: ??值1 比较符号 数值2$A 比较符号 $B大于:-gt小于:-lt等于:-eq大等:-ge小等:-le不等:-ne命令执行状态返回值: 0-2550: 正确执行1-255: 错误执行exit [n] 脚本执行的最后一条件命令的状态返回值;1:写一个脚本,生成两个随机数,比较其大小;显示大数;bash有个内置变量:$RANDOM$RANDOM 显示随机数#!/bin/bash#A=$RANDOMB=$RANDOMif [ $A -ge $B ]; thenecho "Max number is $A."elseecho "Max number is $B."fi2:写一脚本,随机生成一个整数,判定,显示其奇偶性;#!/bin/bash#A=$RANDOMif [ $[$A%2] -eq 0 ]; thenecho "$A: Even"elseecho "$A: Odd"fi3:给定一个用户,如果其ID号大于499,就说明其是普通用户,否则,就说明其是管理员或系统用户;#!/bin/bash#UserName=daemonUid=`id -u $UserName`if [ $Uid -gt 499 ]; thenecho "A common user: $UserName."elseecho "admin user or system user: $UserName."fi4:求200以内所有为3的整数倍的整数之和;#!/bin/bash#Sum=0for I in {1..200}; doif [ $[$I%3] -eq 0 ]; thenSum=$[$Sum+$I]fidoneecho "Sum: $Sum."5:给定一个用户,如果其UID等于GID,就说明这是个“good guy”,否则,“Bad guy.”#!/bin/bash#UserName=user1if [ `id -u $UserName` -eq `id -g $UserName` ]; thenecho "Good Guy."elseecho "Bad Guy."fi6:写一个脚本:计算100以内所有奇数的和以及所有偶数的和;分别显示之;#!/bin/bash#EvenSum=0OddSum=0for I in {1..100}; doif [ $[$I%2] -eq 0 ]; thenEvenSum=$[$EvenSum+$I]elseOddSum=$[$OddSum+$I]fidoneecho "EvenSum is: $EvenSum. OddSum is: $OddSum."更多见下一页: http://www.linuxidc.com/Linux/2013-07/87922p2.htm