shell中if的使用
shell中if的基本使用
if的使用需要使用 [ expression ] 或者 [[ expression ]] 特别的是,中括号的两侧需要使用空格。也可不使用[] 使用 test expression。
笔者习惯使用 [ expression ] 的格式,下文均为此格式。
下为符合expression则打印1。
if [ expression ] ; then
echo 1
fi
#或者
if test expression ; then
echo 1
fi
shell中if的基本使用
变量a和变量b数值相等则输出aaa,否则输出bbb
a=1
b=1
if [ $a -eq $b ] ; then
echo aaa
else
echo bbb
fi
SHELL中if中条件表达式的使用
在if的条件表达式中需要对判断的变量类型区分
shell中if的整数比较
整数比较时可以不使用""来包围变量。使用形如文上shell中if的基本使用
整数比较使用形如 [ $a -gt 0 ] 的表达式形式
其中
-eq 两个整数是否相等
-ne 两个整数是否不等
-gt 一个数是否大于另一个数
-lt 一个数是否小于另一个数
-ge 大于等于
-le 小于等于
shell中if的浮点数比较
参照浮点数运算,将两值相减。例 :
v=`echo $a $b|awk '{printf "%0.4f\n", $1-$2}'`
下面有解决的初步方法:
1.只比较大小,可以乘以对应的10的平方,再计算。
2.在只考虑两浮点数差值大于一的情况下。
相减出的值
使用cut指令切割第一个字符,和第二个字符。
|cut -c 1
第一个字符为 - ,则a<b
第一个字符0则相等
第一个字符为1-9,则a<b
两浮点数相差较小(小于1),仍需要比较的。需要逐位切割字符,比较大小。
shell中实现浮点数运算
shell中if的字符比较
字符比较必须使用""引号将变量包围。
比较使用 != 或者 =
$a=x
if [ "$a" = "x" ] ; then
echo aaa
else
echo bbb
fi
shell中if多个字符变量同时比较
形如以下模式的比较,变量最好加上{},形成
a
的
格
式
。
例
子
A
:
i
f
[
"
{a}的格式。 例子A:if [ "
a的格式。例子A:if["ax" = “xx” ]
例子B:if [ "
a
x
"
=
"
x
x
"
]
例
子
A
会
认
为
变
量
{a}x" = "xx" ] 例子A会认为变量
ax"="xx"]例子A会认为变量ax 是否为xx的字符
$a=x
$b=aaa
if [ "${a}${b}" = "x${b}" ] ; then
echo aaa
else
echo bbb
fi
shell中if连续判断多个条件
if中 || 或条件和 && 与条件的使用方法一致。
number1=1
number2=2
if [[ "$number1" = "1" ]] && [[ "$number2" = "2" ]] ; then
echo "number1=1 and number2=2"
fi
判断StrStart为1-9之间的数值,符合条件的输出StrstartNot0
下面的双中括号 [[ ]] 和单中括号效果一致 [ ]
StrStart=1
if [[ "$StrStart" = "1" ]] || [[ "$StrStart" = "2" ]] || [[ "$StrStart" = "3" ]] || [[ "$StrStart" = "4" ]] || [[ "$StrStart" = "5" ]] || [[ "$StrStart" = "6" ]]|| [[ "$StrStart" = "7" ]] || [[ "$StrStart" = "8" ]] || [[ "$StrStart" = "9" ]] ; then
echo StrStartnot0
fi
文件判断
此部分笔者未使用过,摘自其他文章。
-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
注 在上述字符前加“!”则表示相反,即“是否不存在”
-nt 判断file1是否比file2新
-ot 判断file1是否比file2旧
————————————————
原文链接:https://blog.csdn.net/qq_28723681/article/details/116495755
SHELL中if使用正则表达式
判断number是否为0-9之间的数字。
if [ $number=^[0-9] ];then
echo "correct"
else
echo "error"
fi
以下为正则表达式的使用连接(未更新)
正则表达式的使用
文中如有错误,希望指正。感谢阅读。