有两个命令能帮助我调试脚本:set -e 遇到执行非 0 时退出脚本,set -x 打印执行过程。
1.
获取8位随机字符串或数字:
获取8位字符串,三种方法
[root@study ~]# echo $RANDOM |md5sum|cut -c 1-8
679359fe
[root@study ~]# openssl rand -base64 4
ertU+Q==
[root@study ~]# cat /proc/sys/kernel/random/uuid |cut -c 1-8
749ffce5
获取8位数字,三种方法
[root@study ~]# echo $RANDOM |cksum |cut -c 1-8
14713720
[root@study ~]# openssl rand -base64 4|cksum|cut -c 1-8
35648508
[root@study ~]# date +%N|cut -c 1-8
30114052
cksum:打印CRC效验和统计字节
#这样就是秒+纳秒的输出
date +%s%N
2.
定义一个颜色输出字符串函数
[root@study ~]# ./echo_color.sh red "abc"
abc
[root@study ~]# ./echo_color.sh green "abc"
abc
[root@study ~]# vim echo_color.sh
function echo_color {
case $1 in
green)
echo -e "\033[32;40m$2\033[0m"
;;
red)
echo -e "\033[31;40m$2\033[0m"
;;
*)
echo "Example: echo_color red string"
esac
}
echo_color $*
3.
检查主机存活状态
方法3:利用for循环将ping通就跳出循环继续,如果不跳出就会走到打印ping失败
ping_success_status() {
if ping -c 1 $IP > /dev/null; then
echo "$IP Ping is successful."
continue
fi
}
IP_LIST="192.168.31.1 192.168.31.88 192.168.31.3"
for IP in $IP_LIST; do
ping_success_status
ping_success_status
ping_success_status
echo "$IP Ping is failure!"
done
要注意即便把continue写到函数里,也可以继续函数外的下一次循环的用法。这个for循环里的调用函数用的很巧妙,函数调用三次,ping成功不会执行三次,执行失败才会执行三次。