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循环详解及实例

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中的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的意思

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多个条件判断

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语句)

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语句的多种条件参数

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 块的命令。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档