linux if else if,if elif else

大家好,关于linux if else if很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于if elif else的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

linux,shell中if else if的写法,if elif

在Linux和shell编程中,处理多个条件判断时,if-else if的语法至关重要。让我们通过一个实例来理解其正确用法。首先,遇到需求时,我们可能需要根据输入参数执行不同的操作,如检查是否为'tomcat'、'redis'或'zookeeper'。为此,我们编写了一个测试脚本:

在编写shell脚本时,遇到需要对多个参数进行判断的情况,如:

#!/bin/bash

if [[$1='tomcat' ]]; then

echo"Input is tomcat"

elif [[$1='redis' ]]|| [[$1='zookeeper' ]]; then

echo"Input is$1"

else

echo"Input Is Error."

fi

然而,初次尝试时,我们可能会误用为'else if',导致脚本执行出错。如在测试脚本中:

bash

[oracle@standby~]$./ts01.sh zookeeper

./ts01.sh: line 12: syntax error: unexpected end of file

问题在于,正确的写法是'elif',而非'else if'。修正后的脚本如下:

bash

#!/bin/bash

if [[$1='tomcat' ]]; then

echo"Input is tomcat"

elif [[$1='redis' ]]|| [[$1='zookeeper' ]]; then

echo"Input is$1"

else

echo"Input Is Error."

fi

重新执行修正后的脚本,我们得到预期结果:

[oracle@standby~]$./ts01.sh zookeeper

Input is zookeeper

[oracle@standby~]$./ts01.sh tomcat

Input is tomcat

[oracle@standby~]$./ts01.sh redis

Input is redis

[oracle@standby~]$./ts01.sh mysql

Input Is Error.

总结,shell脚本中处理多个条件的正确语法是使用if-elif-else结构,确保每个elif后面紧跟一个条件判断,而else则在所有条件都不满足时执行。

Linux里面if -s命令作用是什么

字符串判断

str1= str2当两个串有相同内容、长度时为真

str1!= str2当串str1和str2不等时为真

-n str1当串的长度大于0时为真(串非空)

-z str1当串的长度为0时为真(空串)

str1当串str1为非空时为真

2、数字的判断

int1-eq int2两数相等为真

int1-ne int2两数不等为真

int1-gt int2int1大于int2为真

int1-ge int2int1大于等于int2为真

int1-lt int2int1小于int2为真

int1-le int2int1小于等于int2为真

3文件的判断

-r file用户可读为真

-w file用户可写为真

-x file用户可执行为真

-f file文件为正规文件为真

-d file文件为目录为真

-c file文件为字符特殊文件为真

-b file文件为块特殊文件为真

-s file文件大小非0时为真

-t file当文件描述符(默认为1)指定的设备为终端时为真

3、复杂逻辑判断

-a与

-o或

!非

EXAMPLE:

[-a FILE ]如果 FILE存在则为真。

[-b FILE ]如果 FILE存在且是一个块特殊文件则为真。

[-c FILE ]如果 FILE存在且是一个字特殊文件则为真。

[-d FILE ]如果 FILE存在且是一个目录则为真。

[-e FILE ]如果 FILE存在则为真。

[-f FILE ]如果 FILE存在且是一个普通文件则为真。

[-g FILE ]如果 FILE存在且已经设置了SGID则为真。

[-h FILE ]如果 FILE存在且是一个符号连接则为真。

[-k FILE ]如果 FILE存在且已经设置了粘制位则为真。

[-p FILE ]如果 FILE存在且是一个名字管道(F如果O)则为真。

[-r FILE ]如果 FILE存在且是可读的则为真。

[-s FILE ]如果 FILE存在且大小不为0则为真。

[-t FD ]如果文件描述符 FD打开且指向一个终端则为真。

[-u FILE ]如果 FILE存在且设置了SUID(set user ID)则为真。

[-w FILE ]如果 FILE如果 FILE存在且是可写的则为真。

[-x FILE ]如果 FILE存在且是可执行的则为真。

[-O FILE ]如果 FILE存在且属有效用户ID则为真。

[-G FILE ]如果 FILE存在且属有效用户组则为真。

[-L FILE ]如果 FILE存在且是一个符号连接则为真。

[-N FILE ]如果 FILE存在 and has been mod如果ied since it was last read则为真。

[-S FILE ]如果 FILE存在且是一个套接字则为真。

[ FILE1-nt FILE2 ]如果 FILE1 has beewww.028x.cn#hanged more recently than FILE2, or如果 FILE1 exists and FILE2 does not则为真。

[ FILE1-ot FILE2 ]如果 FILE1比 FILE2要老,或者 FILE2存在且 FILE1不存在则为真。

[ FILE1-ef FILE2 ]如果 FILE1和 FILE2指向相同的设备和节点号则为真。

[-o OPTIONNAME ]如果 shell选项“OPTIONNAME”开启则为真。

[-z STRING ]“STRING”的长度为零则为真。

[-n STRING ] or [ STRING ]“STRING”的长度为非零 non-zero则为真。

[ STRING1== STRING2 ]如果2个字符串相同。“=” may be used instead of“==” for strict POSIX compliance则为真。

[ STRING1!= STRING2 ]如果字符串不相等则为真。

linux 每个if都要搭配一个fi吗

每个if语句都要用fi结束,而且是每一个if都要对应一个fi。

整个if语句用fi闭合起来才算完整,书写时if和fi要垂直对齐以方便查看。

格式举例:

if condition

then

command1

command2

fi

condition是判断条件,如果 condition成立(返回“真”),那么 then后边的语句将会被执行;如果 condition不成立(返回“假”),那么不会执行任何语句。最后必须以fi来闭合,fi就是 if倒过来拼写,即使有多条语句也不需要用{}包围起来。

扩展资料

shell if多条件的格式用法介绍

shell支持任意数目的分支,当分支比较多时,可以使用 if elif else结构,它的格式为:

if condition1

then

statement1

elif condition2

then

statement2

elif condition3

then

statement3

else

statementn

fi

注意,if和 elif后边都得跟着 then。整条语句的执行逻辑为:

如果 condition1成立,那么就执行 if后边的 statement1;如果 condition1不成立,那么继续执行 elif,判断 condition2。

如果 condition2成立,那么就执行 statement2;如果 condition2不成立,那么继续执行后边的 elif,判断 condition3。

如果 condition3成立,那么就执行 statement3;如果 condition3不成立,那么继续执行后边的 elif。

如果所有的 if和 elif判断都不成立,就进入最后的 else,执行 statementn。

阅读剩余
THE END