linux shell if &&,**shell中if语句的使用&&逻辑判断**

shell中if语句的使用&&逻辑判断

转自:https://blog.51cto.com/lovelace/1211353

< 希望对你有所帮助 >

bash中如何实现条件判断?

条件测试类型:

整数测试

字符测试

文件测试

一、条件测试的表达式:

[ expression ] 括号两端必须要有空格

[[ expression ]] 括号两端必须要有空格

test expression

组合测试条件:

-a: and

-o: or

!: 非

二、整数比较:

-eq 测试两个整数是否相等

-ne 测试两个整数是否不等

-gt 测试一个数是否大于另一个数

-lt 测试一个数是否小于另一个数

-ge 大于或等于

-le 小于或等于

命令间的逻辑关系

逻辑与:&&

第一个条件为假 第二个条件不用在判断,最总结果已经有

第一个条件为真,第二个条件必须得判断

逻辑或:||

三、字符串比较

字符串比较:

== 等于 两边要有空格

!= 不等

> 大于

< 小于

四、文件测试

-z string 测试指定字符是否为空,空着真,非空为假

-n string 测试指定字符串是否为不空,空为假 非空为真

-e FILE 测试文件是否存在

-f file 测试文件是否为普通文件

-d file 测试指定路径是否为目录

-r file 测试文件对当前用户是否可读

-w file 测试文件对当前用户是否可写

-x file 测试文件对当前用户是都可执行

-z 是否为空 为空则为真

-a 是否不空

五、if语法

if 判断条件 0为真 其他都为假

单分支if语句

if 判断条件;then

statement1

statement2

fi

双分支的if语句:

if 判断条件;then

statement1

statement2

else

statement3

statement4

fi

Note:

if语句进行判断是否为空

[ “n a m e ” = " " ] 等 同 于 [ ! " name” = "" ] 等同于 [ ! "name”=""]等同于[!"name” ]

[ -z “$name” ]

Note:

使用if语句的时候进行判断如果是进行数值类的 ,建议使用 let(())进行判断

对于字符串等使用test[ ] or [[ ]] 进行判断

(())中变量是可以不使用$来引用的

example:表述数字范围的时候 可以使用if可以是使用case

if [ $x -gt 90 -o $x -lt 100 ]

case $x in

100)

9[0-9])

if [ "Xn a m e " ! = " x " ] 这 个 语 句 的 意 思 是 如 果 name" != "x" ] 这个语句的意思是如果name"!="x"]这个语句的意思是如果name为空,那么X=X成立折执行下面的结果;

写脚本的时候很多时候需要用到回传命令,$?如果上一个命令执行成功,回传值为0,否则为1~255之间的任何一个

0为真

非0为假

条件测试的写法:

1、 执行一个命令的结果

if grep -q “rm” fs.sh;then

2、传回一个命令执行结果的相反值

if !grep -q “rm” fs.sh;then

3、使用复合命令((算式))

if ((a>b));then

4、使用bash关键字 [[判断式]]

if [[ str > xyz ]];then

5、使用内置命令:test 判断式

if test “str” > “xyz”;then

6、使用内置命令:[判断式] 类似test

if [ “str” > “xyz” ];then

7、使用-a -o进行逻辑组合

[ -r filename -a -x filename ]

8、命令&&命令

if grep -q “rm” fn.sh && [ $a -lt 100 ];then

9、命令||命令

if grep -q “rm” fn.sh || [ $a -lt 100 ];then

示例脚本(

写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分

成绩(A-F)。

A: 90–100

B: 80–89

C: 70–79

D: 60–69

F: <60

)

#/bin/bash

#Verson:0.1

#Auther:lovelace

#Pragram:This pragram is calculation your grade

#import an argument

read -p “Please input your grade:” x

declare -i x

#jugemet x v a l u e i s n o n e o r n o t i f [ " x value is none or not if [ "xvalueisnoneornotif["x" == “” ];then

echo “You don’t input your grade…”

exit 5

fi

#jugement the gread level

if [[ “KaTeX parse error: Expected 'EOF', got '&' at position 13: x" -ge "90" &̲& "x” -le “100” ]];then

echo “Congratulation,Your grade is A.”

elif [[ “KaTeX parse error: Expected 'EOF', got '&' at position 13: x" -ge "80" &̲& "x” -le “89” ]];then

echo “Good,Your grade is B.”

elif [[ “KaTeX parse error: Expected 'EOF', got '&' at position 13: x" -ge "70" &̲& "x” -le “79” ]];then

echo “Ok.Your grade is C.”

elif [[ “KaTeX parse error: Expected 'EOF', got '&' at position 13: x" -ge "60" &̲& "x” -le “69” ]];then

echo “Yeah,Your grade is D.”

elif [[ “$x” -lt “60” ]];then

echo “Right,Your grade is F.”

else

echo “Unknow argument…”

fi

执行结果:

[root@lovelace if]# ./grade.sh

Please input your grade:

You don’t input your grade…

[root@lovelace if]# ./grade.sh

Please input your grade:53

Right,Your grade is F.

[root@lovelace if]# ./grade.sh

Please input your grade:88

Good,Your grade is B.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果语句是 shell 脚本的一种判断语句,允许在特定条件为真时执行一组命令,并在特定条件为假时执行另一组命令。语法格式如下: ``` if [ condition ]; then commands1 else commands2 fi ``` 其 `condition` 是一个测试命令,如果其返回值为真,则执行命令 `commands1`,否则执行命令 `commands2`。 ### 回答2: if语句shell编程最基本的控制结构之一,它允许根据条件执行不同的命令或语句块。if语句的基本语法如下: ``` if condition then command1 command2 ... else command3 command4 ... fi ``` 其,condition是一个测试条件,可以使用比较操作符(例如-eq、-ne、-lt、-gt、-le、-ge)、逻辑操作符(例如&&和||)、以及test命令来测试。如果condition为真,那么if语句then到else之间的部分会被执行,否则执行else到fi之间的部分(如果有的话)。注意,if、then、else和fi这些关键字都需要用空格分开。 下面是一个简单的例子: ``` #!/bin/bash FILE="example.txt" if [ -e "$FILE" ] then echo "$FILE exists." else echo "$FILE does not exist." fi ``` 这个脚本会测试example.txt文件是否存在。如果存在,会输出“example.txt exists.”,否则输出“example.txt does not exist.”。 除了基本语法,if语句还可以使用嵌套的形式来实现更复杂的控制结构。例如: ``` if [ "$VAR1" = "value1" ] then if [ "$VAR2" -lt "10" ] then echo "VAR1 is value1 and VAR2 is less than 10." else echo "VAR1 is value1 but VAR2 is not less than 10." fi else echo "VAR1 is not value1." fi ``` 这个脚本会先测试VAR1变量是否等于value1,如果是,再测试VAR2是否小于10。如果VAR1不是value1,就直接输出“VAR1 is not value1.”。 总之,if语句shell编程非常基本的控制结构,可以根据条件执行不同的命令和语句块。学习if语句的基本语法和使用方法,对于编写复杂的shell脚本非常有帮助。 ### 回答3: 在 Linux shell ,if 语句是一种用于控制流程的条件语句,通常用于判断某个表达式是否成立以执行特定的代码块。if 语句的基本格式为: ``` if [ 条件表达式 ]; then # 条件成立时执行的代码块 else # 条件不成立时执行的代码块 fi ``` 其,条件表达式一般是一个命令或变量判断逻辑表达式,如 `if [ $a -eq 1 ]`,表示当变量 `$a` 等于 1 时条件成立;`if [ -f file.txt ]`,表示当当前目录下有名为 file.txt 的文件时条件成立。如果条件成立,则执行 then 后面的代码块,否则执行 else 后面的代码块。 还可以用 elif 关键字设置多个条件分支,格式如下: ``` if [ 条件表达式1 ]; then # 条件1成立执行的代码块 elif [ 条件表达式2 ]; then # 条件2成立执行的代码块 else # 以上条件都不成立则执行的代码块 fi ``` 除了直接在 if 语句行写条件表达式外,我们还可以采用变量或命令的方式来构造条件表达式,常用的有: - 命令的条件控制: ``` if command; then # command 命令返回 0 时执行的代码块 else # command 命令返回非 0 值时执行的代码块 fi ``` - 变量的条件控制: ``` if [ -n "$var" ]; then # 判断变量是否非空 # 变量不为空时执行的代码块 fi ``` if 语句还有一些比较特殊的用法,例如: - 判断文件是否存在: ``` if [ -e file ]; then # -e 表示判断文件是否存在 # 文件存在时执行的代码块 fi ``` - 检查字符串是否包含另一个字符串: ``` if [[ "$str" == *substr* ]]; then # 包含子串时执行的代码块 fi ``` 总之,if 语句是 Linux shell 编程最常用的控制流程的条件语句,掌握好 if 语句的写法和用法,可以让你更加灵活地处理各种情况下的程序逻辑问题,提高编程效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值