当前位置:首页 » 网页前端 » shell脚本if语句的判断条件格式
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

shell脚本if语句的判断条件格式

发布时间: 2022-09-26 04:11:09

⑴ shell中if怎么判断多个条件

if [ expression 1 ]
then
Statement(s) to be executed if expression 1 is true
elif [ expression 2 ]
then
Statement(s) to be executed if expression 2 is true
elif [ expression 3 ]
then
Statement(s) to be executed if expression 3 is true
else
Statement(s) to be executed if no expression is true
fi

⑵ 写shell脚本怎么写这句话:if((a-b)*(b-c)>0),对于初学者真的好难

其实很多语言逻辑都一样的
#! /bin/bash
# 我们这里假设 a=5 b=4 c=2

if [[ $[$[5-4]*$[4-2]] > 0 ]];then
echo "条件成立"
else
echo "条件不成立"

fi

# 上面判断语句执行的顺序是先算$[5-4] 和$[4-2] 然后在把前面2个的相乘,最后来判断是否大于0
# 备注: 在shell中 $[]是可以做数学计算的 而且是从内向外执行的
如果还有不懂的, 欢迎继续提问

⑶ linux 下shell 脚本 if条件,想写 a=0且b=0 或者c!=0,应该怎么写啊、我写成if [$a -eq 0] && [ $b -eq 0

root@Bizbox:~# a=0
root@Bizbox:~# b=0
root@Bizbox:~# c=5
root@Bizbox:~# if [ $a = 0 -a $b = 0 ]&&[ $c != 0 ]; then
> echo success
> fi
success
注意方括号中前后的空格!

⑷ 关于shell 中的if 逻辑表达式。

if expression
then
commands
fi
这是if其中的一种结构,在结构中就能看到if 后面接的是什么。
这个后边描述的是你想要干什么,根据你的需要去描述出来然后进行下一步的操作
这个并不是固定的。你还是看书吧。。书上写的比这里回答的人描述的详细。
if和then的语法 如果if和then处在同一行 中间需要用;隔开,如果不在同一行可以不用写
if grep "file " /tmp/tmp.txt ;then 这属于语法格式,这个是固定的。其实一行内多个命令之间都需要用;号隔开。如果不在同一行就不用考虑。就像你在终端输入命令一样,一行一个命令。一行多跳命令需要用;隔开。。也是这个道理。至于!取反。。!属于操作符 举个例子来说 $A = $B 如果结果匹配 执行 then 不匹配执行else $A != $B !=就是不等 !进行取反操作 如果判断结果匹配 执行then 不匹配执行eslse
哇。。说了好多废话。。我还是强烈建议你仔细看书。。
______________________________________________
1)我还是建议你看书,而且是看对书,我说的这些都是书上有的。
关于[]你不应该理解成test语法才需要 test就是[] []就是test
抛开if不讲 test也可以单独使用 比如test xxx 写成 [xxxx]意思是一样的。
至于里边加的参数,就涉及到你的需求 要干什么 要判断字串?整数?表达式?文件?
跟用test 还是用 []并没有太大关系 举个例子 test $? -le 0 和 [ $? -le 0] 意思是一样的

2)要解释if ! grep "file" /tmp/tmp.txt ; then 首先你要明白系统所设置的操作符。比如= 比如+、-、*、/、这些都是操作符,至于! 属于位操作符, 我下班了。有空聊

⑸ shell if 多条件判断

#其中mkdir外面的符号是esc下来那个按键上的符号,表示执行命令
#!/bin/bash
if[`mkdir-p~/1/1`-a`mkdir~/2`];then
echo"成立{$?}"
else
echo"不成立{$?}"
fi

⑹ Shell编程中 if语句判断时怎样写判断条件判断变量a若为整型变量则执行后面的语句

把if [ "$tt" ~ '/^[1-9][0-9]*$/' ] 改成
if [ "$tt" -le 0 -o "$tt" -ge 0 ] 2>/dev/null

这边是只会做整数的比较,如果$tt不是整数就会产生错误信息,并不比较。然后执行else后面的动作。产生的错误信息可以用2>/dev/null丢掉。

如果是整数则进行[]内的比较,中间的-o表示或者,意思是整数$tt小于等于0或者大于等于0则为真,执行then后面的动作

⑺ shell 条件判断的几种方式

#第一种:if ...then...fi
function test1()
{
local RET=0
if [ $RET -eq 0 ];then
echo "yes"
else
echo "no"
fi
}

#第二种: []
function test2()
{
local RET=0
[ $RET -eq 0 ] && echo "yes" || echo "no"
}

#第三种: [[ ]]

function test3()
{
local RET=0
[[ $RET -eq 0 ]] && echo "yes" || echo "no"
}

#第四种 :test命令
function test3()
{
local RET=0
test $RET -eq 0 && echo "yes" || echo "no"
}

不考虑对低版本bash和对sh的兼容的情况下,用[[]]是兼容性强,而且性能比较快,在做条件运算时候,可以使用该运算符。

⑻ shell脚本中的if中多条件语句如何写。

可以使用
if-elif-else
语法来写多条件语句。
1、首先要理解if-else的基本用法,if条件+then操作+else操作+fi闭合,书写方法如下:
2、if
-elif-else
语法的具体格式--if单条件多分支,书写方法如下:
3、实例
-
if单条件多分支,这个实例的输出结果是:a
小于
b。
4、实例
-
if多条件多分支,这个实例输出结果是:a
等于
b,或
a小于10。
(8)shell脚本if语句的判断条件格式扩展阅读
1、shell语法注意事项
shell的if语法和C语言等高级语言非常相似,唯一需要注意的地方就是shell的if语句对空格方面的要求比较严格,如果在需要空格的地方没有打上空格,就会报错。
如if
[
1
==
1
];then
echo
"abc";fi中如果在少写了if后面的空格就报错:
2、
shell语法中[[
]]和[
]的主要区别
(1)
[
]
实际上是bash

test
命令的简写。即所有的
[
expr
]
等于
test
expr。

test
命令来说,

-eq
要进行数字比较,而你此时传入字符串,就报错了。
(2)
[[
]]
是内置在shell中的一个命令,它比test强大的多。支持字符串的模式匹配(使用=~操作符时甚至支持shell的正则表达式)。逻辑组合可以不使用test的-a,-o而使用&&
||。

⑼ shell脚本 if判断条件问题

你既然已经知道这个文件叫什么就没有意义了。。。。理论上应该用find命令或者你知道这个目录在系统中的什么位置。
比如
ls | grep aaa
a=`echo $?`
b=`ls | grep aaa`
if [ $a -eq 0 ]
then
tar zcvf Name.tar.gz $b
else
echo 'Don't have this file.'
fi

⑽ shell if函数中几种条件判断的区别

1、整数比较:
[plain] view plain
-eq 等于,如:if [ "$a" -eq "$b" ] 或 if [ $a -eq $b ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
== 等于,如:if if (("$a" == "$b"))
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
特别说明的是(())字符和括号之间不需要留空格,但[[ ]],[]要求比较严格,需要留空格。
2、字符串比较,上面的-eq,-nq等公式只适用于数字比较,不适用于字符比较

[plain] view plain
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],与=等价

[[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
[[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
[ $a == z* ] # File globbing 和word splitting将会发生
[ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true

3、括号之间的区别:

[[ ]],[]对括号内变量要求严格且且敏感,但(())则相对宽松一些

[plain] view plain
1、if [[ $a == $b ]] 和 if [[ $a == $b ]] 等价
但if [[ $a == $b ]] 和if [[ a == b ]] 不等价
2、if (($a == $b)) 和 if (($a = $b))等价
if (($a == $b)) 和 if ((a == b)) 等价

4、多条件判断:

&&和||适用于[[ ]]和(),-a和-o适用于[]中

举例如下:

[plain] view plain
if ((i == 1)) 和 if [ "$i" == 1 ]等价

if [[ "$i" = 1 && "$j" = 2 ]] 和 if ((i = 1)) || ((j = 2))

5、其它说明:

!= 不等于,如:if [ "$a" != "$b" ]

这个操作符将在[[]]结构中使用模式匹配.
< 小于,在ASCII字母顺序下.如:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意:在[]结构中"<"需要被转义.
> 大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]