自学内容网 自学内容网

Shell脚本总结-if循环

最小化的if语句

无实际用途

if [ ] ;then 
echo 
fi

脚本解释

if 判断 [   ]  里面的条件是否成立 后面跟then,代表条件成立 如果在一行则使用分号隔离(;) 如果不在一行使用则·直接在下一行驶入then即可。  

如果条件成立则输出echo 后面的内容。fi表示结束。

脚本执行结果

[root@ldpbzhaonan bash]$ cat var01.sh 
if [ ] ;then 
echo 
fi
[root@ldpbzhaonan bash]$ bash var01.sh 

[  ] 里面必须要加入空格

否则无法执行

[root@ldpbzhaonan bash]$ cat var01.sh 
if [] ;then 
echo 
fi
[root@ldpbzhaonan bash]$ bash var01.sh 
var01.sh:行1: []:未找到命令

判断是否为文件

[root@ldpbzhaonan bash]$ cat var02.sh 
if [ -f /etc/passwd ]
   then 
      echo '/etc/passwd 存在,并且是一个普通文件'
fi
[root@ldpbzhaonan bash]$ bash var02.sh
/etc/passwd 存在,并且是一个普通文件

这里就是使用 -f 判断 /etc/passwd 是否存在,并且是一个普通文件。

如果条件成立则输出   /etc/passwd 存在,并且是一个普通文件。

判断是否为空

[root@ldpbzhaonan bash]$ cat varif03.sh 
if [ "LDP" ]
   then 
     echo "不为空"
fi
[root@ldpbzhaonan bash]$ bash varif03.sh
不为空

if分支

[root@ldpbzhaonan bash]$ cat varif04.sh 
nginx=/usr/local/nginx
if  [ -d ${nginx} ]
  then
   /usr/bin/echo "ngin目录存在!!!"
  else
    /usr/bin/mkdir ${nginx}
    [ -d ${nginx} ] && /usr/bin/echo "${nginx}存在!!!"
脚本说明:

这里就是设置一个变量nginx=/usr/local/nginx

if  [ -d ${nginx} ]
判断 该目录是否存在 ,变量需要有$字符才能转换,并且规范使用花括号({}),括起来。

then  /usr/bin/echo "ngin目录存在!!!"
如果以上的判断成立,则输出ngin目录存在!!!。这里引用echo命令的绝对路径。

else  /usr/bin/mkdir ${nginx}
else就是代表以上的判断不成立的化,则输出以下内容,这里引用mkdir 命令的绝对路径,来创建nginx对应的变量。

 [ -d ${nginx} ] && /usr/bin/echo "${nginx}存在!!!"

再次判断变量对用的目录是否存在,存在则执行${nginx}存在!!!

&&(逻辑与) 就是如果左边的条件成立,则输出右边的命令,如果左边的条件不成立,则不输出右边的命令
fi


 

比较数字

aaa=333
bbb=444
if [ ${aaa} -gt ${bbb} ]
  then 
    echo "${aaa} 大于 ${bbb}"
     exit 0
  else
    echo "${aaa}可能小于或者等于${bbb}"
     exit 9
fi

 这里就是设置aaa bbb 字符的变量

如果 aaa的变量大于bbb的变量,则输出${aaa} 大于 ${bbb}的变量

否则 输出${aaa}可能小于或者等于${bbb}的变量

exit的作用是退出当前运行的程序,并将参数value返回给主调进程。

exit 0 表示程序正常退出 ,非0代表程序异常退出

如图显示以上脚本的输出结果和echo $? 返回的值

双中括号的使用

双中括号就是支持运算符的使用

不使用双中括号

[root@ldpbzhaonan bash]$ cat varif06.sh
num1=666
num2=777
if [ ${num1} > ${num2} ]
  then  
    echo "${num1} > ${num2}"
exit 0
  else
    echo "${num1} <= ${num2}"
 exit 6
fi

[root@ldpbzhaonan bash]$ bash varif06.sh 
666 > 777

在这里设置num1 大于num2 的话才输出num1 > num2的变量,但是很明显num1小于num2,这里就是一个中括号不支持运算符的使用

使用双中括号

[root@ldpbzhaonan bash]$ cat varif06.sh
num1=666
num2=777
if [[ ${num1} > ${num2} ]]
  then  
    echo "${num1} > ${num2}"
exit 0
  else
    echo "${num1} <= ${num2}"
 exit 6
fi

[root@ldpbzhaonan bash]$ bash varif06.sh
666 <= 777

查看结果马上不一样了,代表双中括号支持运算符的使用,因此建议大家使用双中括号来编写if语句


原文地址:https://blog.csdn.net/cnluxiansheng/article/details/136914251

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!