首页编程shellif shell脚本中 if 判断时候-s是什么意思

shellif shell脚本中 if 判断时候-s是什么意思

编程之家2023-11-04154次浏览

其实shellif的问题并不复杂,但是又很多的朋友都不太了解shell脚本中 if 判断时候-s是什么意思,因此呢,今天小编就来为大家分享shellif的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

shellif shell脚本中 if 判断时候-s是什么意思

shell脚本中 if 判断时候-s是什么意思

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

其它说明:

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

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

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

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

shellif shell脚本中 if 判断时候-s是什么意思

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

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

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

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

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

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

shellif shell脚本中 if 判断时候-s是什么意思

[-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 been changed 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”的长度为零则为真。字符串为空即NULL时为真。

[-n STRING ] or [ STRING ]“STRING”的长度为非零 non-zero则为真。加-n与不加-n结果相同。

shell if 参数

1) bash

a=3; b=2; c=4

if(( a> b))&&(( a< c))

或者

if [[$a>$b ]]&& [[$a<$c ]]

或者

if [$a-gt$b-a$a-lt$c ]

2) a=3; b=2; c=4

if(( a> b))||(( a< c))

或者

if [[$a>$b ]]|| [[$a<$c ]]

或者

if [$a-gt$b-o$a-lt$c ]

3)-o= or,-a= and,但我一向只用||或者&&

4)可用,但是要两个独立的 [ ], [[ ]]或(())

看 1)

5)-ne比较数字(numberic);!=比较字符(string),但后者拿来

比较数字也可,只是不是标准用法

-lt是等同<,但<只能在 shell的数值操作符(())或

者逻缉操作符 [[ ]]才可使用,-lt,-eq,-gt,-ge

-le,这些是 test,就是 [ ]这个内建命令使用的条件操

作符,数字用,=,!=字符用,==这个该是 [[ ]]用的,

可用来比对正规表示式,但用在 [ ]也可,只是不太正统用法

这可以吗?呵呵

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

1、整数比较:

[plain] view plain copy

-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 copy

=等于,如: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 copy

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 copy

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" ]

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。

扩展资料

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而使用&&||。

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

css层叠样式表(css层叠样式表有哪几种类型)关键词怎么写 论文的关键词怎么写