shell脚本实战-1

有两个命令能帮助我调试脚本: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

获取for循环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

#!/bin/bash
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循环linux系统ping通就跳出循环继续,如果不跳出就会走到打印ping失败

#!/bin/bash
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循环语句外的下一次循环的用法。这个for循环里的调用函数用的很巧for循环是先循环还是先判断妙,函数调用三次,ping成功不会执行三次,执行失败才会执行三次。