if的[]和[[]]

news/2025/4/1 2:35:28/

[]是bash里test的同义词,比如[ -d filename ]和test -d filename的结果是一样的,逻辑测试使用-a、-o
[[]]比[]通用,逻辑测试使用&&、||

#!/bin/bash
x=$1
if [ -d $x ];thenecho ok
elseecho "not equel"
fi
----------------------------
[root@localhost shelltest]# test -d /root && echo ll
ll

在[]里面,使用-eq的时候,需要用整数来做参数,如果是非整数就会提示报错,而[[]]则直接把非整数的字符串转成了0(),而不会去检查并显示报错内容。

if [ $x -eq $y ]时
[root@localhost shelltest]# ./teststring.sh 1 ad
./teststring.sh: line 4: [: ad: integer expression expected
当if [[ $x -eq $y ]]时
[root@localhost shelltest]# ./teststring.sh ad ad
ok
[root@localhost shelltest]# ./teststring.sh 1 a
not equel
[root@localhost shelltest]# ./teststring.sh aa 0
ok
[root@localhost shelltest]# ./teststring.sh 0 aa
ok

[]和[[]]都不支持+-*/数学运算符

整数的比较
注意前面都是有个符号-

eq等于
ne不等于
gt大于
ge大于等于
lt小于
le小于等于
例
if [ $x -eq $y ]
if [[ $x -gt $y ]]
if [ "$x" -eq "$y" ]
if [[ "$x" -eq "$y" ]]
>大于
>=大于等于
<小于
<=小于等于
例
if [[ $x > $y ]]
if (( $x > $y ))
注:if [ $x > $y ]会一直为true,可以改成if [ $x \> $y ],也就是把符号>转义(包括字符串(**ASCII中对应的顺序大小**)和整数)。(if [ "$x" \> "$y" ])

字符串的比较
=等于,效果和==是一样的

if [ $x = $y ]
if [[ $x = $y ]]
if [ $x == $y ]
if [[ $x == $y ]]
if [[ $x = "abc" ]]

-z测试是否为空,为空则为true

if [ -z "$x" ]
if [ -z $x ]

-n测试是否不为空,不为空则为true

if [ -n "$x" ]

注:需要有双引号,负责一直为true


http://www.ppmy.cn/news/163286.html

相关文章

IfThen/IIF/Case

功能:使用表达式返回两(多)个值之一. Delphi(帮助文档): Math单元:[Delphi] function IfThen(AValue: Boolean, const ATrue: Integer, const AFalse: Integer): Integer; [Delphi] function IfThen(AValue: Boolean, const ATrue: Int64, const AFalse: Int64): Int64; …

关于if(a)

if&#xff08;a&#xff09; if&#xff08;!a&#xff09; if&#xff08;a!&#xff1d;0&#xff09; if&#xff08;a&#xff1d;&#xff1d;0&#xff09; 都是看括号里的东西是否为真&#xff0c;为真则执行&#xff0c;不为真则跳过。如果a是数字&#xff0c;那么if(…

双if和if else的区别

如下表&#xff1a; -描述场景双if2个判断都会执行不相干的2个判断if else上一个判断不满足&#xff0c;执行下一个判断有一个判断满足&#xff0c;不再执行后续判断多个条件互斥的时候 if else 是互斥的么 其实应该分开来答。 语句之间是互斥的&#xff0c;如&#xff1a; …

if - else

目录 前言 if-else的使用格式 例子 总结 前言 在使用if的时候&#xff0c;它只能做到满足条件时要做的事情。那万一需要在不满足条件的时候&#xff0c;做某些事&#xff0c;该怎么办呢&#xff1f;这时候我们就可以用到else。 if-else的使用格式 if 条件:满足条件时要做的…

【if else】

关于做判断这个程序注意的内容 1.如果if和else的结果不同&#xff0c;则分别在if和else后面加上输出的结果。 见例二 2.如果if和else最后都是用同样一句话结尾&#xff0c;则可把printf放在最后 见例三 3.有时else不用写出来&#xff0c;直接printf&#xff0c;因为else的情况…

if(!a)

if( !a )就是一个判断语句&#xff0c;判断表达式 !a 的真假&#xff0c;进而决定是否执行后续操作。 如果a是一个变量 当a等于0时&#xff0c;!a1&#xff08;为真&#xff09;&#xff0c;执行后续操作&#xff1b; 当a不等于0时&#xff0c;!a0&#xff08;为假&#xff09…

22. if...elif...else 多向判断

22. if…elif…else 多向判断 文章目录 22. if...elif...else 多向判断1. if...else...语句复习2. 体验代码3. 代码执行的顺序4. 课堂练习5. 总结 1. if…else…语句复习 在上一节中&#xff0c;我们学习了if...else...语句。 如果条件成立就执行if语句后面的代码块。 如果条…

#if/#if

<#if bj.gender1 > </#if>