在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
上部: 面向过程: 一、for语句 格式: 复制代码 代码如下: #!/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 bash的变量类型: $@, $*: 所有位置参数; 二、if语句 1、单分支if语句: 复制代码 代码如下: #!/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语句: 格式: 例6、写一个脚本,实现如下功能: 如果设备/dev/sda3已经挂载,就显示其挂载点;否则,就说明其未挂载或设备不存在; 复制代码 代码如下: #!/bin/bash Device='/dev/sda3' if mount | grep "^$Device" &> /dev/null; then mount | grep "/dev/sda3" | cut -d' ' -f3 3、多分支if语句: 复制代码 代码如下: #!/bin/bash Vendor=`grep "vendor_id" /proc/cpuinfo | uniq | cut -d: -f2` if [[ $Vendor =~ [[:space:]]*GenuineIntel$ ]]; then echo "intel" 下部: 例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;但要先判断用户是否存在,不存在而后再添加; 复制代码 代码如下: #!/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字符测试: 例6、写一个脚本,判定用户的shell是否为bash; 复制代码 代码如下: #!/bin/bash Shell=`grep "^$1:" /etc/passwd | cut -d: -f7` if [ "$Shell" == "/bin/bash" ]; then echo "Bash User." Ret=0 else echo "Not Bash User." Ret=9 fi exit $Ret 例7、根据用户shell的结束符是否为sh来判定其是否为登录用户: 复制代码 代码如下: #!/bin/bash Shell=`grep "^$1:" /etc/passwd | cut -d: -f7` if [ -z $Shell ]; then echo "No shell." exit 3 fi if [[ "$Shell" =~ sh$ ]]; then echo "Login User." Ret=0 else echo "None Login User." Ret=4 fi exit $Ret 二、bash测试之文件测试: 操作符 文件路径
例8、给定一个路径,判断如果为普通文件,显示之;如果为目录,显示之; 复制代码 代码如下: #!/bin/bash if [ ! -e $1 ]; then echo "No such file." exit 7 fi if [ -f $1 ]; then echo "Common file." elif [ -d $1 ]; then echo "Directory." else echo "Unknown file." fi 综合例子: 复制代码 代码如下: #!/bin/bash if [ $1 == start ] ;then touch /var/lock/subsys/script echo "Starting script successfully." elif [ $1 == stop ] ; then rm -f /var/louk/subsys/script echo "Stop script finished." elif [ $1 == restart ];then rm -f /var/louk/subsys/script touch /var/lock/subsys/script echo "Restarting script successfully." elif [ $1 == status ];then [ -e /var/lock/subsys/script ]&& echo "script is running." || echo "script is stopped." else echo "script.sh {start|stop|restart|status}" fi |
请发表评论