前面介绍linux shell的if判断的语法,现在再补充一点。

Linux shell if条件判断1

分支判断结构

    if , case

 

下面两个结构语法,已经在前面有过示例。

结构1:

if CONDITON; then

   statement

   statement

   

fi

结构2:

if CONDITON; then

   statement

   statement

else

   statement

   statement

fi

下面会分享几个我编写的示例,希望对大家有所帮助。

编写脚本,有用户输入用户名,判断用户是否存在,如果不存在,就显示用户不存在,如果存在,以下面格式输出用户相关信息:

用户名:

宿主目录:

shell程序:

[root@wei shell]# cat if2.sh 
#!/bin/bash
#
read -p "请输入用户名:" name if id $name &> /dev/null; then
   echo "用户名:" $name
   homedir=`grep "^$name:" /etc/passwd | awk -F: '{print $6}' `
   shname=`grep "^$name:" /etc/passwd | awk -F: '{print $7}' `
   echo "宿主目录:$homedir"
   echo "SHELL名称:$shname "
else
   echo "用户$name不存在"
fi

编写脚本,判断文件是否存在空行,有则显示空行个数,没有则显示文件类容,并在每一行显示行号

#!/bin/bash
#
read -p "请输入文件的名称:" file if grep "^$" $file &> /dev/null; then
   number=`grep "^$" $file | wc -l`
   echo "文件$file中的空行的数量:$number"
else
   echo "文件$file内容如下:"
   cat -n $file
fi

用法3 :多分支if结构

if CONDITON; then

   statement

   statement

elif CONDITON; then

   statement

   statement

elif CONDITON; then

   statement

   statement

else

   statement

   statement

fi

多个条件的写法:

   AND        [conditionl -a condition2]          [conditionl ] && [ condition2]

   OR         [conditionl -o condition2]          [conditionl ] || [ condition2]

编写脚本,判断当前系统时间的小时数字

   9--11       morning

   12--14      noon

   15--18      afternoon

               night

        

        

#!/bin/bash
#
hour=`date +%H`
if [ $hour -ge 9 -a $hour -le 11 ]; then
   echo "Morning" 
elif [ $hour -ge 12 -a $hour -le 14 ]; then
   echo " Noon"
elif [ $hour -ge 15 -a $hour -le 18 ]; then
   echo " Afternoon"
else
   echo "Night"
fi

执行效果:

[root@wei shell]# date
2019年 03月 19日 星期二 18:44:50 CST
[root@wei shell]# bash shi.sh 
 Afternoon

数学表达式

字符表达式

 [ str1 == str2 ]

 [ str1 != str2 ]

 [ -z  str1  ]   判断字符串是否为空

判断两次密码是否相同 

#!/bin/bash
#
read -p "请输入密码:" pwd1
read -p "请在一次输入密码:" pwd2
if [ "$pwd1" == "$pwd2" ];then
   echo "密码输入正确"
else
   echo "密码两次输入不一致"
fi

文件目录表达式:

  

     [ -e file ]  判断文件目录是否存在

     [ -f file ]  判断是否为文件

     [ -e file ]  判断是否为目录

     [ -r file ]  判断文件是否有r权限

     [ -w file ]  判断文件是否有w权限

     [ -x file ]  判断文件是否有x权限

     

双目表达式

单目表达式  [ -e file ]  [ ! -e file ]

用法4: if的内嵌语法

if CONDITON; then

   if CONDITON; then

      statement

      statement

    fi

else

   statement

   statement

fi

判断用户是否存在,如果用户存在,判断他的root的id和group的id是否相同

#!/bin/bsah
#
read -p "输入用户名: " name if id $name &> /dev/null; then
   #获取uid,gid进行判断
   user_id=$(id -u $name)
   group_id=$(id -g $name)
   if [ $user_id -eq $group_id ];then
      echo " Good user"
   else
      echo "Bad user"
   fi
else
   echo "用户不存在"
fi

判断文件是否存在,如果存在输入到备份的文件去

#!/bin/bash
#
read -p "输入文件的路径:" file
if [ -e $file ]; then
   read -p "输入备份的路径:" dir
   if [ -e $dir ]; then
      cp $file $dir
      echo "文件$file备份到$dir目录"
   else
       mkdir -p $dir
       cp $file $dir
       echo "文件$file备份到$dir目录"
   fi
else
   echo “文件$file不存在”
fi

Linux shell if条件判断2的更多相关文章

  1. Linux Shell编程 条件判断语法

    if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...

  2. Linux shell case条件判断及位置变量

    case语句使用于需要进行多重分支的应用情况 case分支判断结构 语法: case 变量名称 in      value1)          statement          statemen ...

  3. Linux shell if条件判断1

    shell 逻辑控制语句:            分支判断结构        if        case     循环结构         for         while         unt ...

  4. shell中条件判断if中的-z到-d的意思

    shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 ...

  5. shell中条件判断if中的-z到-d

    shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真.[ -c FILE ] 如果 ...

  6. 我们一起来学Shell - shell的条件判断

    文章目录 Shell 条件测试语法 符号说明 Shell 测试表达式 文件测试表达式 字符串测试表达式 整数操作符 逻辑操作符 测试表达式的区别总结 Shell 条件判断之if语句 单分支 IF 条件 ...

  7. shell中括号的特殊用法 linux if多条件判断

    一.   bash [  ] 单双括号 基本要素: Ø  [ ] 两个符号左右都要有空格分隔 Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ] Ø  字符串比较中,&g ...

  8. (转)shell中括号的特殊用法 linux if多条件判断

    一.   bash [  ] 单双括号 基本要素: Ø  [ ] 两个符号左右都要有空格分隔 Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ] Ø  字符串比较中,&g ...

  9. Linux学习 -- Shell编程 -- 条件判断

    按照文件类型进行判断 两种格式 test -e /root/install.log [ -e /root/install.log ]   注意空格  适合用于脚本中 echo $?可以看到结果 [ - ...

随机推荐

  1. 第一章 了解Web及网络基础

    第一章 了解Web及网络基础 Web建立基础.HTTP如何诞生发展 1.使用HTTP协议访问Web 在浏览器地址栏中输入URL之后过程: 1)DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地 ...

  2. Codeforces Round #549 (Div. 2) E 倍增处理按排列顺序的上一个位置

    https://codeforces.com/contest/1143/problem/E 题意 p为n的一个排列,给出有m个数字的数组a,q次询问,每次询问a数组区间[l,r]中是否存在子序列为p的 ...

  3. loj 2955 「NOIP2018」保卫王国 - 树链剖分 - 动态规划

    题目传送门 传送门 想抄一个短一点ddp板子.然后照着Jode抄,莫名其妙多了90行和1.3k. Code /** * loj * Problem#2955 * Accepted * Time: 26 ...

  4. 【报名中】【5G探索】深度揭秘5G核心技术与挑战,云+社区开发者大会北京站等你来!

    报名渠道(扫描下方二维码) 开发者专属福利 限量手办 现场幸运签到开发者即可获得,早到获奖几率更大 幸运抽奖 一等奖:1名 JBL LIVE650 BTNC无线主动降噪智能耳机 二等奖:3名 JBL ...

  5. SpringBoot的ApplicationRunner

    Article1 在开发中可能会有这样的情景.需要在容器启动的时候执行一些内容.比如读取配置文件,数据库连接之类的.SpringBoot给我们提供了两个接口来帮助我们实现这种需求.这两个接口分别为Co ...

  6. 基于canvas自动化运维工具

    首先我们的工具绝对顶尖,绝对绚丽.如果有需要代码,可以加我微信索取.18500591275 前几天有个客户找到我,问我这个能不能做,我看自己也干了10年前端了,实在做不了,后来人家说给你10000你能 ...

  7. pyqt pyinstaller使用说明

    一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 python2.7使用 ...

  8. win 10 上解压安装 MySQL 8

    win 10 上解压安装 MySQL 8 # 进入到mysql的bin目录底下操作: # 初始化mysql mysqld --initialize --console # 安装mysql服务 mysq ...

  9. Sitecore XP 8.2 新功能

    Sitecore的®体验平台™ 8.2是最全面的更新最新的一个,平衡增强现有客户,而在同一时间提供了引人注目的新功能.你可以在这里阅读新闻稿,但我想对8.2中的一些重大变化给予一些额外的关注.作为奖励 ...

  10. CF1200D 【White Lines】

    退役快一年了之后又打了场紧张刺激的$CF$(斜眼笑) 然后发现$D$题和题解里的大众做法不太一样 (思路清奇) 题意不再赘述,我们可以看到这个题~~好做~~在只有一次擦除机会,尝试以此为突破口解决问题 ...