linux 下shell中if的“-e,-d,-f”运算符号判断条件等

206 阅读2分钟

文件表达式 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filename 如果 filename为符号链接,则为真 -r filename 如果 filename可读,则为真 -w filename 如果 filename可写,则为真 -x filename 如果 filename可执行,则为真 -s filename 如果文件长度不为0,则为真 -h filename 如果文件是软链接,则为真 filename1 -nt filename2 如果 filename1比 filename2新,则为真。 filename1 -ot filename2 如果 filename1比 filename2旧,则为真。

整数变量表达式 -eq 等于 -ne 不等于 -gt 大于 -ge 大于等于 -lt 小于 -le 小于等于

字符串变量表达式 If [ a=a = b ] 如果string1等于string2,则为真 字符串允许使用赋值号做等号 if [ string1!=string1 != string2 ] 如果string1不等于string2,则为真
if [ -n string]如果string非空(0),返回0(true)if[zstring ] 如果string 非空(非0),返回0(true) if [ -z string ] 如果string 为空,则为真 if [ $sting ] 如果string 非空,返回0 (和-n类似)

逻辑非 !                   条件表达式的相反

if [ ! 表达式 ] if [ ! -d num]如果不存在目录num ] 如果不存在目录num

逻辑与 –a                   条件表达式的并列

if [ 表达式1 –a 表达式2 ]

逻辑或 -o                   条件表达式的或

if [ 表达式1 –o 表达式2 ]

#!/bin/bash echo "Please enter a number" read num if [ -z num ] #判断是否输入了数字 then echo "you enter nothing,please enter a number" read num else if [ num -lt 0 -o num -gt 100 ] #判断数据是否合法 then echo "The number is invalid,please enter a number" read num else if [ num -ge 90 ] #大于等于90,成绩等级为A then echo "The grade is A" else if [ num -ge 80 ] #大于等于80,成绩等级为B then echo "The grade is B" else if [ num -ge 70 ] #大于等于70,等级等级为C then echo "The grade is C" else if [ $num -ge 60 ] #大于等于60,成绩等级为D then echo "The grade is D" else echo "The grade is E" #小于60,成绩等级为E fi fi fi fi fi fi

!/bin/bash

echo "please input your grade:" read a if [ a -ge 90 ] #大于 -gt (greater than) then #小于 -lt (less than) echo 'A' #大于或等于 -ge (greater than or equal) elif [ a -ge 80 ] #小于或等于 -le (less than or equal) then #不相等 -ne (not equal) echo 'B' elif [ age70]thenechoCelif[a -ge 70 ] then echo 'C' elif [ a -ge 60 ] then echo 'D' else echo 'E' fi IF条件判断

1、基本语法: if [ command ]; then 符合该条件执行的语句 fi

2、扩展语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句 fi

5:两个变量判断是否相等 if [ "var1"="var1" = "var2" ]; then   echo 'var1eqvar1 eq var2' else   echo 'var1noteqvar1 not eq var2' fi

$#:传入脚本的参数个数;

$0: 脚本自身的名称;  

$1: 传入脚本的第一个参数;

$2: 传入脚本的第二个参数;

$@: 传入脚本的所有参数;

$*:传入脚本的所有参数;

$?: 上一条命令执行后的状态,结果为0表示执行正常,结果为1表示执行异常; 其中$@与$*正常情况下一样,当在脚本中将$*加上双引号作为“$*”引用时,此时将输入的所有参数当做一个整体字符串对待。比如输入参数有a b c三个参数,则“$*”表示“a b c”一个字符串。