shell脚本之判断语句if详解
shell脚本之判断语句if详解
使⽤ Linux 系统这么长时间,对 shell 脚本也算是⽐较熟悉。其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能。这次抽时间
好好总结⼀下 shell ⽅⾯的知识,综合的再学习⼀下,记录。这篇⽂章总结的是 shell 脚本的 if 语句的使⽤。
⼀、if 语句的基本语法
if [ 条件判断 ]; then
... ...
elif [ 条件判断 ]; then
... ...
else
... ...
fi
⼆、⽂件/⽬录的判断
关于⽂件或⽬录的相关判断⽅法:
[ -e file ] 判断⽂件是否存在
[ -f file ] 判断⽂件是否是普通⽂件
[ -d file ] 判断⽂件是否是⽬录⽂件
[ -b file ] 判断⽂件是否块设备⽂件
[ -c file ] 判断⽂件是否字符设备⽂件
[ -s file ] 判断⽂件是否是⾮空⽂件
[ -r file ] 判断⽂件是否可读
[ -w file ] 判断⽂件是否可写
[ -x file ] 判断⽂件是否可执⾏
三、数字⽐较判断
关于针对数字的判断,⾸先定义a=10, b=8
[root@vip ~]# a=10 b=8
[ $a -eq $b ] 判断 a 是否等于 b
[ $a -ne $b ] 判断 a 是否不等 b
[ $a -gt $b ] 判断 a 是否⼤于 b
[ $a -ge $b ] 判断 a 是否⼤等 b
[ $a -lt $b ] 判断 a 是否⼩于 b
[ $a -le $b ] 判断 a 是否⼩等 b
四、字符串的判断和⽐较
关于针对字符串的判断⽐较,⾸先定义 str1=abc, str2=abd
[root@vip ~]# str1=abc; str2=abd
[ -z str ] 判断 str 是否长度为0
[ -n str ] 判断 str 是否长度不为0
[ str1 == str2 ] 判断 str1 与 str2 是否相等
[ str1 != str2 ] 判断 str1 与 str2 是否不等
[ str1 \> str2 ] 判断 str1 是否⼤于 str2
[ str1 \< str2 ] 判断 str1 是否⼩于 str2
[[ str1 > str2 ]] 判断 str1 是否⼤于 str2
[[ str1 < str2 ]] 判断 str1 是否⼩于 str2
五、逻辑判断
[ $a -lt $b -a $str1 == $str2 ] a ⼤于 b, ⽽且 str1 与 str2 相等 (&&)
[ $a -lt $b -o $str1 == $str2 ] a ⼤于 b, 或者 str1 与 str2 相等 (||)
[[ $a -gt $b && $str1 == $str2 ]] a ⼤于 b, ⽽且 str1 与 str2 相等 (&&)
[[ $a -gt $b || $str1 == $str2 ]] a ⼤于 b, 或者 str1 与 str2 相等 (||)
[ $a -lt $b ] && [ $str1 == $str2 ] a ⼤于 b, ⽽且 str1 与 str2 相等 (&&)
[ $a -lt $b ] || [ $str1 == $str2 ] a ⼤于 b, 或者 str1 与 str2 相等 (||)
六、常⽤ if 实例
待更新。。。
shell循环详解及实例
shell循环详解及实例
⼀、条件选择、判断(if、case)
1.1 if语句⽤法及实例
当我们在脚本中遇到需要判断的时候,我们就可以⽤if语句来实现。具体的语法如下:
单分⽀
if 判断条件;then
条件为真的分⽀代码
fi
双分⽀
if 判断条件; then
条件为真的分⽀代码
else
条件为假的分⽀代码fi
多分⽀
if 判断条件1; then
条件为真的分⽀代码
elif 判断条件2; then
条件为真的分⽀代码
elif 判断条件3; then
条件为真的分⽀代码
else
以上条件都为假的分⽀代码
fi
在多分⽀中,系统会逐条判断你写⼊的条件,第⼀次遇到“真”条件时,执⾏该分⽀,⽽后结束整个if语句。
注意:1、if和fi是成对出现的
2、if语句可以嵌套。
Example:
1)判断两个数字的⼤⼩
1 #!/bin/bash
2 #定义变量
3 read -p "Please input the first num:" num1
4 read -p "Please input the second num:" num2
5 #判断数字是否符合标准
6 if [[ $num1 =~ ^[0-9]+$ && $num2 =~ ^[0-9]+$ ]];then
7 # 判断两个数字的⼤⼩并输出判断结果
8 if [ $num1 -lt $num2 ];then
9 echo "The num2 is biger than the num1"
10 elif [ $num1 -eq $num2 ];then
11 echo "Two numbers equal"
12 else
13 echo "The num1 is biger than the num2"
14 fi
15 else
16 echo "Please enter the correct number"17 fi
18
19 #删除变量
20 unset num1 num2
shell if then语句用法
shell if then语句用法
Shell中的if-then语句是编写Shell脚本时经常使用的一种控制流结构。它允许我们根据给定的条件在程序中执行不同的操作。本篇文章将详细介绍Shell if-then语句的用法,一步一步回答有关该主题的相关问题。
首先,让我们来了解一下if-then语句的基本语法。Shell中的if-then语句通常采用以下形式:
if [ 条件 ]
then
操作1
操作2
...
fi
其中if和then是关键字,条件是一个可以求值为true或false的表达式,操作是需要在条件为true时执行的命令或语句。如果条件为true,则执行if块中的操作;如果条件为false,则跳过if块,继续执行后续的命令。
接下来,我们将逐步回答一些与Shell if-then语句相关的问题。
1. 如何判断一个条件是否为真?
if-then语句的条件可以是任何可以返回true或false的表达式。在Shell中,我们通常使用一些比较运算符(如等于、大于、小于等)来比较两个值。比如,判断两个数是否相等可以使用等于运算符“==”。
下面是一个简单的例子,判断变量x的值是否等于10:
shell
if [ x == 10 ]
then
echo "x等于10"
fi
2. 如果我有多个条件需要判断,应该如何写if-then语句?
如果需要判断多个条件,可以使用elif(else if)关键字来添加额外的条件判断块。elif语句的用法和if-then类似。
下面是一个示例,判断一个数是正数、负数还是零:
shell
if [ num -gt 0 ]
then echo "num是正数"
elif [ num -lt 0 ]
then
echo "num是负数"
else
echo "num是零"
fi
3. Shell的if-then语句是否支持嵌套?
shell if fi的意思
shell if fi的意思
shell脚本中的if-fi结构是条件语句,用于根据条件来执行不同的代码块。if-fi结构的意思是,如果满足某个条件,则执行某些特定的操作,否则执行其他操作。在shell脚本中,if-fi结构通常如下所示:
shell.
if [ condition ]
then.
# 在这里执行条件成立时的操作。
else.
# 在这里执行条件不成立时的操作。
fi.
在这个结构中,[ condition ]是一个条件表达式,可以是比较操作符、逻辑操作符或者其他测试命令。如果条件成立(即返回真),则执行then和fi之间的代码块;如果条件不成立(即返回假),则执行else和fi之间的代码块。
if-fi结构可以帮助程序员根据不同的情况执行不同的代码,从而实现更灵活的程序控制流。通过合理地运用if-fi结构,可以使shell脚本更加健壮和适应各种情况。
shell else if多个条件判断
- 1 - shell else if多个条件判断
在Unixshell编程中,“else if”语句允许程序员在条件判断中使用更多的条件,提高代码的可读性,也简化了编程。else if(也称为elif)语句使程序可以根据多个条件去做出不同的决定,比如根据输入值去处理相应的逻辑。
这里以一个简单的示例来说明:设程序要根据用户输入的数字判断属于哪一范围,如果用户输入的数字在1-10内,则输出“small
number”;如果数字在11-20内,则输出“medium number”;如果输入的数字在21-30范围内,则输出“large number”,其余情况下输出“out of range”。
没有使用“else if”语句的示例代码可能是这样:
read -p please enter a number: number
if [ $number -le 10 ]
then
echo small number
fi
if [ $number -gt 10 -a $number -le 20 ]
then
echo medium number
fi
if [ $number -gt 20 -a $number -le 30 ]
then - 2 - echo large number
fi
if [ $number -gt 30 ]
then
echo out of range
fi
上述代码中包含了4个if语句,增加了代码的长度,也增加了维护的复杂性,而改用“else if”语句后,可以明显简化代码:
read -p please enter a number: number
if [ $number -le 10 ]
shell 脚本(if test语句)
————————————————————————————————
test 命令
语法:
test expression 或者 [expression]
test命令对表达式进行评估,并且设置返回值。
表达式的值 返回值
true 0
false 非零(通常为1)
test命令能够评估的对象有:
整数
字符串
文件
test命令被用来评估表达式并且产生返回值。它用参数组成逻辑表达式并且对表达式进行评估。test命令不会产生标准输出,你必须必须通过返回值来判断test命令的结果。
如果表达式为真,返回值会为0,如果表达式为假,返回值为1。
test命令可以被单独使用,然后你能够看到返回值,但它用的最多的还是在if和while结构中,用来提供条件流程控制。
test命令的也可以用[expression]来代替。这对提高可读性有帮助,特别是在处理数字或者字符串的时候。
注意:在"["和"]"符号的周围必须要有空格。
test命令之数字test
语法:
[ number relation number ] 通过关系运算符来对数字进行比较
关系运算符:
-lt 小于
-le 小于或者等于
-gt 大于
-ge 大于或者等于
-eq 等于
-ne 不等于
例子(假设X=3):
$ [ "$X" -lt 7] $ [ "$X" -gt 7]
$ echo $? $ echo $?
0 1
test命令能被用于比较两个整数之间的数字关系。通常用[.....]语法来调用。test命令的返回值就能说明这个条件为真还是为假。
当testing一个变量的值的时候,你应该防止变量不要为空值,例如:
$ [ $XX -eq 3]
sh: test:argument expected
如果变量XX在前面没有被赋值,XX的值会是NULL。当shell执行变量替代的时候,shell会试图执行如下语句:
shell脚本if语句的多种条件参数
shell脚本if语句的多种条件参数
if语句有多种写法
[root sh]# [ -f file ] && echo "yes" || echo "no"
yes
修改如下:
if [ -f file ]
then
echo "yes"
else
echo "no"
fi
简写:
[ -f file ] && echo "yes"
表⽰if条件成⽴时返回yes[ -f file ] || echo "no"
表⽰if条件不成⽴时,返回no
可以⽤if判断如下条件:
实际上if的条件就是test命令的参数
[omcr@lnltedmr3 ~]$ man test
TEST(1) User Commands TEST(1)
NAME
test - check file types and compare values
SYNOPSIS
test EXPRESSION
test
[ EXPRESSION ]
[ ]
[ OPTIONDESCRIPTION
Exit with the status determined by EXPRESSION.
--help display this help and exit
--version
output version information and exit
An omitted EXPRESSION defaults to false. Otherwise, EXPRESSION is true or false and sets exit status. It is one of:
( EXPRESSION )
EXPRESSION is true
! EXPRESSION
EXPRESSION is false
EXPRESSION1 -a EXPRESSION2
both EXPRESSION1 and EXPRESSION2 are true
EXPRESSION1 -o EXPRESSION2
shell中if用法
第一部分 If的用法
第一种
if list then
do something here
fi
当list表述返回值为True(0)时,将会执行"do something here"。
#!/bin/sh
myPath="/var/log/httpd/"
myFile="/var /log/httpd/access.log"
1. 是否存在并且是否具有可执行权限
#这里的-x 参数判断$myPath
if [ ! -x "$myPath"]; then
mkdir "$myPath"
fi
2. 目录是否存在
#这里的-d 参数判断$myPath是否存在
if [ ! -d "$myPath"]; then
mkdir "$myPath"
fi
3. 文件是否存在
#这里的-f参数判断$myFile是否存在
if [ ! -f "$myFile" ]; then
touch "$myFile"
fi 4. 变量是否有值
#其他参数还有-n,-n是判断一个变量是否是否有值
if [ ! -n "$myVar" ]; then
echo "$myVar is empty"
exit 0
fi
5. 两个变量判断是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi
6. 比较数字的大小
if [ $df -gt 50 ]
then
$df > diskalert
else
exit
fi
7. 字符串和数字比较大小
if (d == 0)
if [ "$D" -eq "0" ] ; then
if (d != 0)
if [ "$D" -ne "0" ] ; then
shell if 逻辑与条件
shell if 逻辑与条件
Shell if 逻辑与条件
简介
Shell脚本是一种在UNIX系统中常用的脚本语言,用于批处理任务和自动化任务。在Shell脚本中,使用if语句可以根据条件执行不同的代码块。本文将介绍Shell if语句的基本用法和逻辑与条件。
基本用法
Shell if语句的基本语法如下:
if [ condition ]
then
statements1
elif [ condition ]
then
statements2
else
statements3
fi
其中,condition是一个表达式,可以使用比较运算符、逻辑运算符和字符串比较进行判断。then后面是条件成立时要执行的代码块,elif后面是其他条件的判断块,else后面是如果都不满足条件时要执行的代码块。
在Shell脚本中,条件可以是数值、字符串或文件等。比如:
if [ $num -gt 10 ]
then
echo "Number is greater than 10."
else
echo "Number is less than or equal to 10."
fi
上述代码中,$num是一个变量,-gt是比较运算符,表示大于。如果$num大于10,则输出”Number is greater than 10.”,否则输出”Number is less than or equal to 10.”。
逻辑与条件
Shell提供了逻辑运算符来进行多个条件的判断。常用的逻辑运算符有:
• -a:与运算,表示逻辑与关系,两个条件都为真时返回真;
• -o:或运算,表示逻辑或关系,两个条件有一个为真时返回真;
• !:非运算,表示逻辑非关系,条件为假时返回真。
例如,以下代码判断一个数字是否大于0且小于100:
if [ $num -gt 0 -a $num -lt 100 ]
shell 参数判空
- 1 - shell 参数判空
在shell编程中,我们经常需要判断变量是否为空,以决定程序的走向。下面介绍几种常用的 shell 参数判空的方法:
1. 利用 test 命令判断:
```
if [ -z '$var' ]; then
echo 'var is empty'
fi
```
这里使用了 test 命令的 -z 参数,表示判断变量是否为空。如果 var 变量为空,则打印出 'var is empty'。
2. 利用 if 命令判断:
```
if [ '$var' ]; then
echo 'var is not empty'
else
echo 'var is empty'
fi
```
这里使用了 if 命令来判断变量是否为空。如果 var 变量不为空,则打印出 'var is not empty',否则打印出 'var is empty'。
3. 利用 ${var:-default} 判断: - 2 - ```
echo ${var:-'var is empty'}
```
这里使用了 ${var:-default} 的语法,表示如果 var 变量为空,则打印出 'var is empty',否则打印出 var 变量的值。
以上是几种常用的 shell 参数判空的方法,可以根据实际需求选择使用。
.sh if语法
.sh if语法
在shell(如bash)脚本中,if语句是一种控制结构,用于根据条件执行不同的命令或代码块。
一般if语句的语法为:
```
if [ condition ]
then
command1
command2
...
fi
```
`condition`是一个条件表达式,可以是任何返回值为true或false的命令。如果条件为真,则执行`command1`、`command2`等命令,并继续执行if语句后面的代码;如果条件为假,则跳过`command1`、`command2`等命令,直接执行if语句后面的代码。
我们也可以使用if-else语句,语法为:
```
if [ condition ]
then
command1
command2
... else
command3
command4
...
fi
```
`else` 语句块在条件表达式为 false 时执行。如果条件表达式为
true,则执行 if 语句块中的语句。
我们也可以使用if-elif-else语句,语法为:
```
if [ condition1 ]
then
command1
command2
...
elif [ condition2 ]
then
command3
command4
...
else
command5
command6
...
fi
```
`elif` 语句块可以有多个。如果if语句块的条件表达式为 false ,则测试 elif 语句块中的表达式。如果它为 true,则执行 elif 块中的命令。如果 elif 语句块的条件表达式也为 false,则执行最后的 else 块的命令。
