linux if与或,linux中if命令
大家好,关于linux if与或很多朋友都还不太明白,今天小编就来为大家分享关于linux中if命令的知识,希望对各位有所帮助!
linux比较字符串相等linux比较字符串
shell中如何比较两字符串是否相等?
比较两个字符串是否相等的办法是:
if;then
这里的关键有几点:
1使用单个等号
2注意到等号两边各有一个空格:这是unixshell的要求
3注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x=testx,显然是不相等的。而如果没有这个x,表达式就会报错:
-ne不等于,如:if
-gt大于,如:if
-ge大于等于,如:if
-lt小于,如:if
-le小于等于,如:if
大于(需要双括号),如:(("$a">"$b"))
>=大于等于(需要双括号),如:(("$a">="$b"))
小数据比较可使用AWK
字符串比较
=等于,如:if
==等于,如:if,与=等价
注意:==的功能在]和中的行为是不同的,如下:
1]#如果$a以"z"开头(模式匹配)那么将为true
2]#如果$a等于z*(字符匹配),那么结果为true
3
4#Fileglobbing和wordsplitting将会发生
5#如果$a等于z*(字符匹配),那么结果为true
一点解释,关于Fileglobbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.
但是fileglobbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
!=不等于,如:if
这个操作符将在]结构中使用模式匹配.
大于,在ASCII字母顺序下.如:
if]
if
注意:在结构中">"需要被转义.
具体参考Example26-11来查看这个操作符应用的例子.
-z字符串为"null".就是长度为0.
-n字符串不为"null"
不区分大小写如何比较shell脚本中的字符串?
方法一:你可以将两个字符串统统转成大写(或小写),再比较#!/bin/bashxxx=Tempyyy=tempx_tmp=$(echo$xxx|tr
)y_tmp=$(echo$yyy|tr
)if;thenechoPASSelseechoFAILfi优点:通用方法二:用expr的话,得这样:xxx=Tempif$`-ne0]thenechoPASSelseechoFAILfi优点:高效,但是限制为特定字符序列
如何比较两个字符串的大小?
字符串是由字符组成的数组。所以比较字符串的大小就是从从左到右比较数组中每一字符的大小。
假设两个字符串较短字符串的长度为N,那么在一个长度为N的循环中,每次循环都比较两个字符串数组当前下标对应的字符——如果第一个字符小于第二个,那么比较终止,第一个字符串小于第二个字符串。同样的,如果第一个字符大于第二个字符,那么第一个字符串就大于第二个字符串。只有在两个字符相等的情况下,字符数组下标加1,进行数组中下一个字符的比较。这种比较只有在两个字符串长度相等并且每一个字符都相等的情况下两个字符串才相等。
字符串怎么比较大小?
1.在比较时,设置一个计数器,从零开始,一直循环到最短的那个字符结束,一位一位进行比较。
2.如果字符串1的第n位的ASCII码值等于字符串2的第n位的ASCII码值则继续比较下一位。
3.如果字符串1的第n位的ASCII码值大于字符串2的第n位的ASCII码值则输出结果:1,表示字符串1>字符串2。
4.如果字符串1的第n位的ASCII码值小于字符串2的第n位的ASCII码值则输出结果:-1表示字符串1字符串2。
5.如果每一位的ASCII码值都相等,而且长度相同,则输出结果:0表示字符串1==字符串2。
对两个字符串进行比较时,要注意以下几点:
1.两个不同长度的字符串进行比较时,不是长的字符串就一定”大”。如A$一”ABCE”,B$一”ABCDEF”。对A$与B$进行比较时,A$的第4个字符是”E”,B$的第4个字符是”D”,而”D””E”,所以B$>A$。尽管B$比A$长。2.当字符串有空格时,空格也参加比较。如A$一”t-一ABOOK”u(表示空格),B$一”A—BOOK”,显示A$>B$。3.大写字母和小写字母的ASCII代码值是有区别的,所以,”yes”>”YEs”。4.当字符串全部用英文字母的大写(或小写)组成时,字符串的大小顺序和它们在字典中的顺序相同。5.由汉字组成的字符串可以参加比较。如”李红””王军”。它们的大小实际是由其拼音构成的字符串的大小来决定的。上例即:”LIHONG””WANGJUN”。
Linuxif语句中的并且操作符详解Linuxif并且
Linux开发中,if语句是用来帮助程序员进行复杂判断的,if语句本身也会有许多关联的符号来实现对复杂判断的要求。其中的一种是并且操作符,这种操作符可以将两个独立的表达式连接起来,只有当这两个表达式同时成立时,才会执行后面定义的操作,下面让我们一起来认识一下关于Linux if语句中的并且操作符的详细内容。
Linux if语句中的并且操作符是“&&”,也有人称为逻辑与操作符,可以将两个独立的表达式连接起来,只有当两个表达式同时成立时,才会执行后面定义的操作。下面我们来说明下并且操作符的运算规则,当两个表达式均为True时,表达式结果才会为True,比如下面的代码:
`if [$name==”yunxing” ]&& [$age-eq 18 ]; then
echo“the name is yunxing and age is 18.”
fi`
从上面的代码中,可以看出并且操作符具有较高的运算优先级,也就是说,当上述两个表达式同时为真时,程序才会执行后面的操作。
从并且操作符的解释中可以发现,这个符号可以用来判断两个或多个条件是否都满足才能做后续处理,比如用户所在国家是否是US它和用户账号是否 authentic,如果这两个条件都满足时,才可以登录系统。
`if [$country=$US ]&& [$authentic-ne 0 ];
then
echo“Login success!”
fi`
总之,Linux if语句中的并且操作符主要用于将两个或多个条件连接起来,只有当这些条件同时满足,才会执行相应的操作。因此,并且操作符在Linux开发中可以帮助我们将复杂的逻辑进行处理。
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 ]如果字符串不相等则为真。