shell脚本练习

例1 循环ping192.168.110网段的所有主机

#!/bin/bash
i=1 #定义变量
for i in {1..254} #变量取值范围
do
   ping -c 2 -w 3 -i 0.3 192.168.110.$i $> /dev/null #ping指令 -c代表执行次数 -w代表超时时间 -i代表时间间隔 $i表示ip地址的最后一个字段取值为变量i /dev/null表示无底洞 即ping指令的输出直接丢弃不显示
  if [ $? -eq 0 ] ;then #$?表示上一个指令的退出状态 如果不为0表示ping通 则显示该地址可达
 echo "192.168.110.$i is yes"
 else
 echo "192.168.110.$i is no" 
 fi #fi是if语句的结束
 let i++ #let用来操作表达式
done #for循环结束

例2 for批量创建用户

user=$`cat /opt/user.txt`
for i in $user #读取文件中的用户信息
do
   useradd $i #添加用户
   echo "1234" | passwd --stdin $i #更新用户密码

done
~    

例3 创建存放1-100奇数的数组里

#!/bin/bash
for ((i=0;i<=100;i++))
do
  if [ $[$i%2] -eq 1  ] ;then #判断数据的奇偶 $i表示变量i -eq判断数据不相等
   arr[$[$[$i-1]/2]]=$i #存放数据 $[]表示变量
  fi
done
echo ${arr[*]}

例4 数组操作

#!/bin/bash
num=(90 90 90 90 90 90 90 90 20 20) #数组定义
for ((i=0;i<=9;i++))
do
  if [  $[num[$i]] -lt 60 ]#判断小于60
  then
     num[$i]=60
  fi
done
echo ${num[*]} #*表示访问数组中所有的元素