运维Shell脚本小试牛刀(一)
运维Shell脚本小试牛刀(二)
运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解
运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客
Cenos7安装小火车程序动画
运维Shell脚本小试牛刀(五):until循环
运维Shell脚本小试牛刀(六): Shell中的函数认知
运维Shell脚本小试牛刀(七):从函数文件中调用另外一个脚本文件中函数
运维Shell脚本小试牛刀(八): case模式忽略命令行参数大小写演示
运维Shell脚本牛刀小试(九): 重定向操作符“>“及双重定向“>>“
一: if...elif...elif..else fi多层嵌套
[root@www dicfor]# cat compareNumbers.sh
#!/bin/bash -
#==================================================================================================================
#
#
# FILE: compareNumbers.sh
# USAGE: ./compareNumbers.sh
# DESCRIPTION: 演示逻辑与 && 和 逻辑或 ||
# OPTIONS: -------
# REQUIREMENTS: ---------
#
# BUGS: ------
# NOTES: --------
# AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com
# ORGANIZATION:
# CREATED: 2023-8-29 09:11:20
# REVISION: --------
#
#
#
#
#
#====================================================================================================================
# 如果指定的命令行参数个数不为1 ,则打印脚本的使用方法信息并退出脚本的运行,退出状态码为1if [ $# -ne 1 ]
then
# 打印脚本的使用信息
echo "Uage: 'basename $0' number"
# 退出脚本,状态码为1
exit 1fi
# 将第一个命令行参数赋值给变量num
num=$1# 如果$num值大于90 且小于100,则执行if语句的内容,否则执行elif的语句
if [ "$num" -ge 90 ] && [ $num -le 100 ]
then
# 打印Excellent
echo "Excellent......................!"
# 如果$num的值大于80 且小于 90, 则执行次elif语句中的内容, 否则执行下面的elif语句
elif [ $num -ge 80 ] && [ $num -lt 90 ]
then
# 打印Good...
echo "Good !............................................"
#如果大于等于60且小于80,则执行elif语句中的内容,否则执行下面的elif语句块,
elif [ $num -ge 60 ] && [ ${num} -lt 80 ]
then
# 打印"Pass mark!"
echo "Pass mark!......................................"
elif [ $num -lt 60 ] && [ $num -ge 0 ]
then
# 打印“Fail !”
echo "Fail!............................................"
# 如果上面的if条件和elif 条件语句都没有执行,则执行次else语句块
else
# 打印 "Wrong number........"
echo "Wrong number......................................"
fi
测试输出:
[root@www dicfor]# ./compareNumbers.sh 2
Fail!............................................
[root@www dicfor]# ./compareNumbers.sh 2 334
Uage: 'basename ./compareNumbers.sh' number
[root@www dicfor]# ./compareNumbers.sh 2 100
Uage: 'basename ./compareNumbers.sh' number
[root@www dicfor]# ./compareNumbers.sh 2 90
Uage: 'basename ./compareNumbers.sh' number
[root@www dicfor]# ./compareNumbers.sh 90
Excellent......................!
二: if...elif...elif..else fi多层嵌套|逻辑与融合
#!/bin/bash -
#==================================================================================================================
#
#
# FILE: checknumber.sh
# USAGE: ./checknumber.sh
# DESCRIPTION:
# OPTIONS: -------
# REQUIREMENTS: ---------
#
# BUGS: ------
# NOTES: --------
# AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com
# ORGANIZATION:
# CREATED: 2023-8-24 09:11:20
# REVISION: --------
#
#
#
#
#
#====================================================================================================================# 如果指定的命令行参数个数等于0,则显示必须指定一个参数的提示信息,然后退出脚本,退出状态码为1
if [ $# -eq 0 ]
then
# 显示必须输入一个参数的提示信息
echo "$0 : You must give/supply one integers...."
# 退出脚本,退出状态码为1
exit 1;
fi# 如果指定的参数大于0
if [ $1 -gt 0 ]
then
echo "The number is positive........"# 如果指定的参数小于0
elif [ $1 -lt 0 ]
thenecho "The number is negative........"
# 如果指定的参数等于0
elif [ $1 -eq 0 ]
then
echo "The number is zero............"else
echo "Opps! $1 is not number,please enter a number..."
fi
测试输出:
[root@www dicfor]# ./checknumber.sh hhd
./checknumber.sh: 第 34 行:[: hhd: 期待整数表达式
./checknumber.sh: 第 40 行:[: hhd: 期待整数表达式
./checknumber.sh: 第 46 行:[: hhd: 期待整数表达式
Opps! hhd is not number,please enter a number...
[root@www dicfor]# ./checknumber.sh 2
The number is positive........
[root@www dicfor]# ./checknumber.sh -1111111111111
The number is negative........
[root@www dicfor]# ./checknumber.sh 0
The number is zero..........
三: case expression in ....1);; ...3).......;; esac替代多层嵌套的if...else ...fi
[root@www dicfor]# cat killsignal.sh
#!/bin/bash -
#==================================================================================================================
#
#
# FILE: killsignal.sh
# USAGE: ./killsignal.sh
# DESCRIPTION: $1,$2分别是指定的信号值和进程号.使用kill命令会发送相应的信号到指定的进程; *)标识默认匹配项,如果其他的项未匹配到,则匹配此项
# OPTIONS: -------
# REQUIREMENTS: ---------
#
# BUGS: ------
# NOTES: --------
# AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com
# ORGANIZATION:
# CREATED: 2023-8-29 09:11:20
# REVISION: --------
#
#
#
#
#
#====================================================================================================================# 如果指定脚本的命令行参数的数目小于2,则显示脚本的方法信息且退出
if [ $# -lt 2 ]
then
echo "Usage : $0 signalnumber pid"
exit
ficase "$1" in
1)echo "Sending SIGHUP signal to PID $2."
# 向指定的PID发送SIGHUP信号
kill -SIGHUP $2
;;2)
echo "Sending SIGHUP signal to PID $2."
# 向指定的PID发送SIGINT信号
kill -SIGINT $2
;;3)
echo "Sending SIGQUIT signal to PID $2"
# 向指定的PID发送SIGQUIT信号
kill -SIGQUIT $2
;;9)
echo "Sinding SIGKILL signal to PID $2."
# 向指定的PID发送SIGKILL信号
kill -SIGKILL $2
;;*)
echo "Signal number $1 is not processed.."
;;
esac
测试执行:文章来源:https://www.toymoban.com/news/detail-686501.html
[root@www dicfor]# ./killsignal.sh
Usage : ./killsignal.sh signalnumber pid
[root@www dicfor]# sleep 60 &
[1] 3211
[root@www dicfor]# ./killsignal.sh 11 3211
Signal number 11 is not processed..
[root@www dicfor]# ./killsignal.sh 9
Usage : ./killsignal.sh signalnumber pid
[root@www dicfor]# sleep 60 &
[2] 3223
[root@www dicfor]# ./killsignal.sh 9 3223
Sinding SIGKILL signal to PID 3223.
[1]- 完成 sleep 60
[2]+ 已杀死 sleep 60
[root@www dicfor]# ./killsignal.sh 9 3223
Sinding SIGKILL signal to PID 3223.
./killsignal.sh: 第 58 行:kill: (3223) - 没有那个进程
文章来源地址https://www.toymoban.com/news/detail-686501.html
到了这里,关于运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!