1、编写脚本命令

read 命令
  1. read 控制用户输入内容
  2. -p 显示提示信息
  3. -s 静默输入
  4. -n 定义输入字符长度
  5. -d '结束符' 定义结束符
  6. -t 定义结束时间
[root@localhost ~]# echo "1 2" >>1.txt ;read a b <1.txt;echo $a+$b|bc
3
[root@localhost ~]# echo 1 2|(read z v;echo $z $v);echo $z $v
1 2
[root@localhost ~]# echo 1 2|{ read z v;echo $z $v;};echo $z $v
1 2
[root@localhost ~]# echo 1 2|read z v;echo $z $v

测试主机是否可以正常通信脚本
#!/bin/bash
read -p "Please ping hostipaddress ---> " ipaddr

[[ $ipaddr  =~  ^(([1-9]?[0-9]|1[0-9]{2}|2[0-5]{2})\.){3}([0-9]|1[0-9]{2}|2[0-5]{2})$ ]] && ping -w 1 $ipaddr && echo "该主机通信正常!" || echo "该主机通信有故障!"


升级版
[root@localhost test]# cat hostip.list 
172.16.1.254
172.16.1.9
123.123.3.4
www.baidu.com
asd.awd.asdzx.

#!/bin/bash
DIR=/date
success="seccess.log"
error="error.log"
function access() {
    cmd='echo `date +%F` $i >>$DIR/$1'
    [[ -e $DIR ]] && eval $cmd || (mkdir $DIR && eval $cmd)
}
for i in `cat /test/hostip.list`
do
    ping -w 1 $i
    if [ $? -eq 0 ];then
        access $success
    else
        access $error
    fi
done

2、循环判断小脚本

#!/bin/bash
clear
echo "欢迎使用傻妞侧重仪器!"
cat <<EOF
---------
   *
  * *
*******
  *  *
*    *
---------
EOF
read -p "请输入你的身高(m):" height
read -p "请输入你的体重(kg):" weight

BMI=`echo ${weight}/${height}^2 | bc`
if [[ $BMI -ge 18 && $BMI -le 25 ]]
then
   echo "太瘦了,多吃点吧,不然要死掉了"
elif [[ $BMI -ge 26 && $BMI -le 30 ]]
then
   echo "哇塞,这就是玉树临风的你吗,终于见到你了,你一点都不胖呢,你是最帅的!"
elif [[ $BMI -ge 31 && $BMI -le 35 ]]
then
   echo "你TM为什么这么胖呢!!"
elif [[ $BMI -ge 36 && $BMI -le 40 ]]
then
   echo "疾病将伴你而来"
else
   echo "神仙下凡,抱歉,我测不出来"
fi

九九乘法表

#!/bin/bash
for i in {1..9};do
    for j in `seq $i`;do
       echo -n "${j}x${i}=${j*i} "
    done
    echo
 done

面试题:1-100 的和

[root@DNS test]# seq 100|paste -s|tr -s '\t' '+'|bc
[root@DNS test]# seq 100|paste -sd +|bc
[root@DNS test]# sum=0;for i in {1..100};do let sum+=$i; done;echo $sum
5050

面试题:1-100 中的偶数和

[root@DNS test]# echo {2..100..2} | tr ' ' '+'|bc
2550
[root@DNS test]# seq 2 2 100|paste -sd +|bc
2550
[root@DNS test]# sum=0;for i in {1..100};do ((i%2 == 0)) && let sum+=$i; done;echo $sum
2550

面试题:1-100 中的奇数和

[root@DNS test]# echo {1..100..2}|tr ' ' '+'|bc
2500
[root@DNS test]# seq 1 2 100|paste -sd +|bc
2500
[root@DNS test]# sum=0;for i in {1..100};do ((i%2 == 0 )) || let sum+=$i; done; echo $sum
2500

面试题:创建 1..10user 十个用户,并设置随机密码

#!/bin/bash
for i in {1..10}
do
  passwd=`cat /dev/urandom|tr -dc "[:alnum:]"|head -c12`
  useradd user$i
  echo user${i}:${passwd} |tee -a 1.txt |chpasswd user${i}
done

面试题:批量修改文件后缀名

#!/bin/bash
DIR=/test/demo/
cd $DIR
for i in *
do
   filename=`echo $i | grep -Eo '.*\.'`;
   mv $i ${filename}bak
done

随机生成 10 以内的数字,实现猜字游戏,提示比较大小,相等就退出

#!/bin/bash
ran=`echo $[RANDOM%10 ]`
while true
do
read -p "请输入: " num
if [ $num -gt $ran ];then
    echo "大了"
elif [ $num -lt $ran ];then
    echo "小了"
else
    echo "对了"

数字答案为 1 到 100 的随机数,执行脚本后等待用户输入数字,若猜中则结束游戏,未猜中则返回答案和所输入数字的大小关系,最多可以猜5次,5次均未猜中则结束游戏

#!/bin/bash
ran=$[$RANDOM%100]
i=0
while   read -p "输入你要猜的数字: num" 
do
        if [ -z $num ]
        then
            echo "请输入数字"
        elif
           [[ $num =~ [^0-9]+$ ]];then
             echo "输入的不是数字"
        elif
          [ $num -gt $ran ]
        then
           echo "大了"
       elif [ $num -lt $ran ];then
           echo "小了"
       else
           echo "恭喜你,猜对了"
       break
     fi
      let  i++
    if  [ $i -eq 5 ]
    then
echo "次数用光,游戏结束,数字为$ran"
break
fi
done