1、编写脚本命令
read 命令
read 控制用户输入内容-p 显示提示信息-s 静默输入-n 定义输入字符长度-d '结束符' 定义结束符-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
