shell编程中使用IF判断

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程中使用IF判断相关的知识,希望对你有一定的参考价值。

现有在HOME目录下有
文件DATE.date 内容就一行 20120102
文件DATE2.date 内容就一行 20120101
A=`sed -n '1p' /HOME/DATE.date | cut -c5-8`
B=`sed -n '1p' /HOME/DATE2.date | cut -c5-8`
C=`expr $B + 1`
请问A C分别是字符串还是数字?
如果在IF语句中要比较A不等于C,该怎么写? 下面写法是否正确?
if [ $A -ne $C ] then ...
if [ $A != $C ] theen ...

参考技术A 都正确
-ne是比较数字
!= 是比较字符串

if判断分为三种条件判断,整数判断,字符串判断。追问

您意思是比如变量A和C 值都为20120102
也可以用 $A != $C 这样比较对吗

参考技术B 我觉得A, C这些变量是没有类型的.
同求解答.本回答被提问者采纳
参考技术C --IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' --

'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'
参考技术D C=`expr $B + 1`
D=`expr $A + 0`
if [ $C -ne $D ]; then
echo "not equal"
else
echo "equal"
fi追问

如果用if [ $A != $C ] 会出现什么情况呢?

追答

自己试试不就知道了吗?

shell 编程if条件判断与if 真假判断

if条件判断与if真假判断


 目录:

 1.正确写法

 2.错误写法

 3.总结


一、正确写法

    在编写shell脚本时,为简化代码的行号及结构的简约型,通常将命令执行结果和判断通过一条语句进行编写(在C语言编写程序时,经常遇到此种写法),如:

[[email protected] ~]#touch test.sh

 if  useradd root &>/dev/null ; then    #如果用户添加成功,则不显示,否则显示用户添加失败
     echo "user1 created successfu" &>/dev/null

 else
     echo "user1 created failed"

 fi
[[email protected] ~]#chmod +x test.sh

[[email protected] ~]#./test.sh

user1 created failed

二、错误写法

    但是如果因记忆失误或编写脚本习惯性,添加[ ]判断时,脚本变为如下:

[[email protected] ~]#touch test.sh

 if  [ useradd user1 &>/dev/null ] ; then    #如果用户添加成功,则不显示,否则显示用户添加失败
     echo "user1 created successfu" &>/dev/null

 else
     echo "user1 created failed"

 fi
[[email protected] ~]#chmod +x test.sh

[[email protected] ~]#./test.sh       #

user1 created failed

[[email protected] ~]#id user1                    #用户添加成功,本应该不显示,但显示添加失败
uid=1005(user1) gid=1005(user1) groups=1005(user1)

[[email protected] ~]#userdel -r user1

######################调试模式执行###################################################

[[email protected] ~]#bash -x 4.sh
+ ‘[‘ useradd user1 ‘]‘         #命令执行成功,但显示失败,原因在添加[ ]条件判断,

+ echo ‘user1 created failed‘   #条件判断默认是判断useradd user1添加成功后,命令结果无显示
user1 created failed            #因此默认[ -n ‘‘ ]为空,因此显示失败

三、总结

   总结,在使用if判断及命令执行结果的语法结构时,命令行中间切忌加判断,条件判断必须加条件判断表达式。其本质是,if 真假判断 和 if 条件判断的区别

                     真假判断                     条件判断

                     if cmd ; then               if [ statement ]; then

                       cmd statement                cmd statement

                     else                        else

                       cmd statement                cmd statement

                     fi                          fi

####################################################################################

###具体详情请咨询微信:QQ767743577  邮箱地址: [email protected],有问必答,有答必应,人人为我,我为人人###

####################################################################################

本文出自 “每天进步一点点,自律” 博客,请务必保留此出处http://wbxue.blog.51cto.com/11831715/1964460

以上是关于shell编程中使用IF判断的主要内容,如果未能解决你的问题,请参考以下文章

shell编程中的条件判断(shell 05)

Shell编程-if判断及特殊用法,文件目录属性判断,case判断

shell编程之 if 判断语句

Linux Shell编程 条件判断语法

Shell编程Shell中的流程控制之if语句

shell 编程if条件判断与if 真假判断