练习1 写一个脚本 用函数的方法 通过ping 命令测试192.168.0.151 到192.168.0.254 之前的所有主机是否在线。 如果在线,就显示"ip is up.",其中的IP要换为真正的IP地址,且以绿色显示;如果不在线,就显示“ip is down。”,其中的IP更换为真正的IP地址,且以红色显示; [root@localhost mscripts]# cat lx37.sh lx37b.sh lx37c.sh #!/bin/bash function ONLINE { ping -c 1 -W 1 $1 } for I in {1..10}; do if ONLINE 172.16.99.$I &> /dev/null; then echo "172.16.99.$I up." else echo "172.16.99.$I down." fi done /////////////// #!/bin/bash function ONLINE { if ping -c 1 -W 1 $1 &> /dev/null; then echo "$1 up." else echo "$1 down." fi }
for I in {1..10}; do ONLINE 172.16.99.$I done ////////////////
#!/bin/bash function ONLINE { if ping -c 1 -W 1 $1 &> /dev/null; then return 0 else return 1 fi }
for I in {1..10}; do ONLINE 172.16.99.$I if [ $? = 0 ]; then echo -e "\033[32m172.16.99.$I up.\033[0m" else echo -e "\033[31m172.16.99.$I down.\033[0m" fi done 练习2 写一个脚本 使用函数完成 1, 函数能够接受一个参数,参数为用户名; 判断用户是否存在 如果存在,就返回此用户的shell 和UID; 并返回正常状态值; 如果不存在,就说此用户不存在;并返回错误值; 2, 在主程序中调用函数; [root@localhost mscripts]# cat lx38.sh #!/bin/bash USERNAME () { if id $1 &> /dev/unll; then id -u $1 cat /etc/passwd | grep "$1" | awk -F: '{print $7}' return 0 else return 2 fi }
if [ $? -eq 0 ]; then USERNAME bruce else USERNAME bruce fi
扩展1: 在主程序中,让用户自己输入用户名后,传递给函数来进行判断; [root@localhost mscripts]# cat lx38b.sh
#!/bin/bash USERNAME () { if id -u $1 &> /dev/null; then return 0 else return 1 fi } read -p "Please input a user:" USERS USERNAME $USERS if [ $? = 0 ]; then id -u $USERS grep "$USERS" /etc/passwd | awk -F: '{print $7}' else echo "$USERS not exist." fi
扩展2: 在主程序中, 输入用户名判断后不退出脚本,而是提示用户继续输入下一个用户名;但如果用户输入的是Q或者q就退出; [root@localhost mscripts]# cat lx38c.sh
#!/bin/bash USERNAME () { if id -u $1 &> /dev/null; then return 0 else return 1 fi } read -p "Please input a user:" USERS #USERNAME $USERS while :; do case $USERS in q|Q) echo "quit.." exit 7 ;; *) USERNAME $USERS if [ $? = 0 ]; then id -u $USERS grep "$USERS" /etc/passwd | awk -F: '{print $7}' else echo "$USERS not exist." fi ;; esac read -p "Please input a user again:" USERS done
原文链接:https://www.f2er.com/centos/374948.html