1、9*9乘法表
使用for循环实现9*9乘法表的输出,其Shell脚本如下所示,执行结果如图1所示。
#!/bin/bash
for(( i=1;i<10;i++ ))
do
line=""
for(( j=1;j<=i;j++ ))
do
line="${line} ${i}*${j}=$(( $i*$j ))"
done
echo $line
done
2、绘制正方形
根据实际需求绘制相应大小的正方形,并且如果输入crtl+c或者输入的不是一个数字则退出脚本执行,其Shell脚本如下所示,执行结果如图2所示。
#!/bin/bash
trap "echo 输入exit退出" 2
while true
do
read -p "你想看多大的正方形:" a
[ "$a" == "exit" ] && exit
expr 1 + $a &>/dev/null
[ $? -ne 0 ] && echo "请输入一个数字!" && exit 2
b="■ "
#进行绘制每一行中的形状
d=$(for i in `eval echo {1..$a}`;do echo -n $b; echo -n " ";done)
#循环绘制多行形状
for i in `eval echo {1..$a}`
do
echo "$d"
done
done
3、查找网络主机
查看处于同一网络段中的主机能够通过PING命令访问到的主机IP地址,将这些IP地址进行输出,并输出到相应的文本文件中,其Shell脚本如下所示,执行结果如图3所示。
#/bin/bash
a=1
while :
do
a=$(($a+1))
if test $a -gt 255
then break
else
if [ "$(ping -c 1 10.10.3.$a | grep "ttl" | awk '{print $4}'| sed 's/://g')" != "" ];then
echo $(ping -c 1 10.10.3.$a | grep "ttl" | awk '{print $4}'| sed 's/://g')
ip=$(ping -c 1 10.10.3.$a | grep "ttl" | awk '{print $4}'| sed 's/://g')
echo $ip >> ip.txt
fi
fi
done
4、查看系统用户
查看系统中无密码用户,并将其用户名进行输出,其Shell脚本如下所示,执行结果如图4所示。
#/bin/bash
echo "No Password User are :"
#/etc/shadow为保存系统密码的文件,通过正则拆分匹配查看密码为空的用户
echo $(cat /etc/shadow | grep "!!" | awk 'BEGIN { FS=":" }{print $1}')