11. 编写脚本, 实现人机 <石头, 剪刀, 布> 游戏
#!/bin/bash
#Author: 丁丁历险 (Jacob)
game=(石头 剪刀 布)
num=$[RANDOM%3]
computer=${game[$num]}
#通过随机数获取计算机的出拳
#出拳的可能性保存在一个数组中, game[0],game[1],game[2] 分别是 3 中不同的可能
echo "请根据下列提示选择您的出拳手势"
echo "1. 石头"
echo "2. 剪刀"
echo "3. 布"
read -p "请选择 1-3:" person
case $person in
1)
if [$num -eq 0];then
echo "平局"
elif [$num -eq 1];then
echo "你赢"
else
echo "计算机赢"
fi;;
2)
if [$num -eq 0];then
echo "计算机赢"
elif [$num -eq 1];then
echo "平局"
else
echo "你赢"
fi;;
3)
if [$num -eq 0];then
echo "你赢"
elif [$num -eq 1];then
echo "计算机赢"
else
echo "平局"
fi;;
*)
echo "必须输入 1-3 的数字"
esac
12. 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态, 哪些主机处于关机
状态 (for 版本)
#!/bin/bash
for i in {1..254}
do
ping -c2 -i0.3 -W1 192.168.4.$i &>/dev/null
if [$? -eq 0];then
echo "192.168.4.$i is up"
else
echo "192.168.4.$i is down"
fi
done
13. 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态, 哪些主机处于关机
状态 (while 版本)
#!/bin/bash
i=1
while [$i -le 254]
do
ping -c2 -i0.3 -W1 192.168.4.$i &>/dev/null
if [$? -eq 0];then
echo "192.168.4.$i is up"
else
echo "192.168.4.$i is down"
fi
let i++
done
14. 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态, 哪些主机处于关机
状态 (多进程版)
# ! /bin/bash#Author: 丁丁历险 (Jacob)#定义一个函数,
ping某一台主机,
并检测主机的存活状态myping() {
ping - c2 - i0.3 - W1 $1 & >/dev/null
if [$ ? -eq 0];
then echo "$1 is up"
else echo "$1 is down"fi
}
for i in {
1..254
}
do myping 192.168.4.$i & done#使用 & 符号,
将执行的函数放入后台执行#这样做的好处是不需要等待ping第一台主机的回应,
就可以继续并发ping第二台主机,
依次类推.
15. 编写脚本, 显示进度条
#!/bin/bash
jindu(){
while :
do
echo -n '#'
sleep 0.2
done
}
jindu &
cp -a $1 $2
killall $!
echo "拷贝完成''
16. 进度条, 动态时针版本
#!/bin/bash
#定义一个显示进度的函数, 屏幕快速显示 | / - \
rotate_line(){
INTERVAL=0.1 #设置间隔时间
COUNT="0" #设置 4 个形状的编号, 默认编号为 0(不代表任何图像)
while :
do
COUNT=`expr $COUNT + 1` #执行循环, COUNT 每次循环加 1,(分别代表 4 中不同的形状)
case $COUNT in #判断 COUNT 的值, 值不一样显示的形状就不一样
"1") #值为 1 显示-
echo -e '-'"\b\c"
sleep $INTERVAL
;;
"2") #值为 2 显示 \\, 第一个 \ 是转义
echo -e '\\'"\b\c"
sleep $INTERVAL
;;
"3") #值为 3 显示 |
echo -e "|\b\c"
sleep $INTERVAL
;;
"4") #值为 4 显示 /
echo -e "/\b\c"
sleep $INTERVAL
;;
*) #值为其他时, 将 COUNT 重置为 0
COUNT="0";;
esac
done
}
rotate_line
17. 9*9 乘法表 (编写 shell 脚本, 打印 9*9 乘法表)
#!/bin/bash
for i in `seq 9`
do
for j in `seq $i`
do
echo -n "$i*$j=$[i*j] "
done
echo
done
18. 使用死循环实时显示 eth0 网卡发送的数据包流量
#!/bin/bash
#Author: 丁丁历险 (Jacob)
while :
do
echo '本地网卡 eth0 流量信息如下:'
ifconfig eth0 | grep "RX pack" | awk '{print $5}'
ifconfig eth0 | grep "TX pack" | awk '{print $5}'
sleep 1
done
19. 使用 user.txt 文件中的人员名单, 在计算机中自动创建对应的账户并配置初始密码
#!/bin/bash
#本脚本执行, 需要提前准备一个 user.txt 文件, 该文件中包含有若干用户名信息
for i in `cat user.txt`
do
useradd $i
echo "123456" | passwd --stdin $i
done
20. 编写批量修改扩展名脚本, 如批量将 txt 文件修改为 doc 文件
#!/bin/bash
#执行脚本时, 需要给脚本添加位置参数
#脚本名 txt doc(可以将 txt 的扩展名修改为 doc)
#脚本名 doc jpg(可以将 doc 的扩展名修改为 jpg)
for i in "ls *.$1"
do
mv $i ${i%.*}.$2
done
来源: http://www.bubuko.com/infodetail-2474565.html