linuxif不等于
1. shell编程中的if判断语句,为什么总是输出“str1 不等于 str2”
字符串的比较问题,
if [ str1 = str2 ]; then
改为:
if [ "$str1" = "$str2" ]; then
变量取值在前面加$,字符串记得加双引号。
2. 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" ]
3. 关于linux if多个判断问题
1 = 1 -a 2 = 2 -a $i = 2
表达式中,=也要和数值空格分开,不然会把 1=1这种当成一个字符串处理
4. linux shell 指令 诸如-d, -f, -e之类的判断表达式
文件比较运算符-e filename
如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename
如果 filename为目录,则为真 [ -d /tmp/mydir ]-f filename
如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]-L filename
如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]-r filename
如果 filename可读,则为真 [ -r /var/log/syslog ]-w filename
如果 filename可写,则为真 [ -w /var/mytmp.txt ]-x filename
如果 filename可执行,则为真 [ -L /usr/bin/grep ]filename1-nt filename2
如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]filename1-ot filename2
如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386
/boot/bzImage ]字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果 string长度为零,则为真 [ -z "$myvar" ]-n string 如果 string长度非零,则为真 [ -n "$myvar" ]
string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three"]
string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]
算术比较运算符num1-eq num2 等于 [ 3 -eq $mynum ]
num1-ne num2 不等于 [ 3 -ne $mynum ]num1-lt num2 小于 [ 3 -lt $mynum ]
num1-le num2 小于或等于 [ 3 -le $mynum ]num1-gt num2 大于 [ 3 -gt $mynum ]
num1-ge num2 大于或等于 [ 3 -ge $mynum ]
拓展资料:
Linux操作系统
是基于UNIX操作系统发展而来的一种克隆系统,它诞生于1991 年的 [Linux桌面] 10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。
5. linux中大于等于
eq 等于 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" ]
< 小于(需要双括号) (( "$a" < "$b" ))
<= 小于等于(...) (( "$a" <= "$b" ))
> 大于(...) (( "$a" > "$b" ))
>= 大于等于(...) (( "$a" >= "$b" ))
6. shell中awk中if判断
你直接运行grep '2018-06' gprs_c* | grep $num |more 看下是不是有输出?
如果提示
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
就是num没有赋值
然后看下awk那里,我这里举了个例子,可以试试下里面例子中的引号
$catgprs_c
2018-06-02;447956815999;2018-06-0200:00:00
2018-06-03;447956815999;2018-06-0300:00:00
2018-06-04;447956815999;2018-06-0400:00:00
$grep'2018-06'gprs_c*|grep'447956815999'|awk-F";"'{if($3<"2018-06-0300:00:00")print$1}'
2018-06-02
$date1="2018-06-0300:00:00"
$grep'2018-06'gprs_c*|grep'447956815999'|awk-F";"'{if($3<"'"$date1"'")print$1}'
2018-06-02
7. C语言 if如果我想加if某变量等于=比如。。。等于apple,怎么写呢 是不是if(ch=“apple”);好像不行
用“==”,“=”符号在C语言中代表的是赋值的意义,比较相等的话,应该用“==”符号,前提是比较双方的数据类型相同。不然会出现错误的。对吧!希望能帮到你!
8. linux shell编程 if语句无法判断变量是否相等
(($num1 != $num2))里面的是算术表达式
用(($num1 - $num2))
或者[ [ $num1 != $num2 ]]
9. linux中的{if($5!=4096)是什么意思
如果第五个参数 不等于 4096
10. linux if判断是不是数字
if echo $n|grep "^[0-9][0-9]*$";then
echo $n是数字
fi