设为首页 收藏本站
查看: 769|回复: 0

shell逻辑控制语句之if-lyw

[复制链接]

尚未签到

发表于 2018-8-26 09:05:09 | 显示全部楼层 |阅读模式
  if语句结构
  用法1:
  if CONDITION; then
  statement
  statement
  fi
  CONDITION条件的写法:
  COMMAND
  [ expression ]
  expression表达式:
  数学表达式
  字符表达式
  文件目录表达式 
  数学表达式:
  [ number1 -eq number2 ]等于
  [ number1 -ne number2 ]不等于
  [ number1 -gt number2 ]大于
  [ number1 -ge number2 ]大于等于 
  [ number1 -lt number2 ]小于 
  [ number1 -le number2 ]小于等于
  例子:
  编写脚本, 由用户输入用户名,判断用户不存在则创建之 
  #!/bin/bash
  #
  read -p "请输入用户名:" name
  id $name &> /dev/null
  if [ $? -ne 0 ]; then
  useradd $name
  echo "redhat" | passwd --stdin $name &> /dev/null
  echo "用户$name创建完成"
  fi
  #!/bin/bash
  #
  read -p "请输入用户:" name

  if !>  useradd $name
  echo "redhat" | passwd --stdin $name &> /dev/null
  echo "用户$name创建完成."
  fi
  用法2: 单分支if
  if CONDITION; then
  statement
  statement
  else
  statement
  statement
  fi
  编写脚本,由用户输入用户名,判断用户不存在则创建之,并设置用户第一次登录系统时需要修改密码;否则提示用户已经存在
  #!/bin/bash
  #
  read -p "Enter user: " name

  if>  echo "用户$name已经存在"
  else
  useradd $name
  echo "redhat" | passwd --stdin $name &> /dev/null
  passwd -e $name &> /dev/null
  echo "用户$name创建成功,初始密码为redhat"
  fi
  编写脚本,判断用户的uid和gid,如果相同,显示Good user,否则显示bad user
  #!/bin/bash
  #
  read -p "输入用户名: " name
  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
  分支判断结构
  if, case
  结构1)
  if CONDITIOIN; then
  statement
  statement
  fi
  结构2)
  if CONDITIOIN; then
  statement
  statement
  else
  statement
  statement
  fi
  CONDITIOIN条件:
  COMMAND
  [ expression ]
  编写脚本,由用户输入用户名,判断用户是否存在,如果不存在,就显示用户不存在,如果存在,以下面格式输出用户相关信息:
  用户名:
  宿主目录:
  SHELL程序:
  #!/bin/bash
  #
  read -p "Enter user: " name

  if>  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 "请输入文件名称(Full Path): " 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 CONDITION; then
  statement
  statement
  elif CONDITION; then
  statement
  statement
  elif CONDITIOIN; then
  statement
  statement
  else
  statement
  statement
  fi
  多个条件的写法:
  AND[ condition1 -a condition2 ][ condition1 ] && [ condition2 ]
  OR[ condition1 -o condition2 ][ condition1 ] || [ condition2 ]
  编写脚本, 判断当前系统时间的小时数字
  9--11morning
  12--14noon
  15---18afternoon
  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
  [ expression ]
  数学表达式
  字符表达式
  [ 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 ] 判断是否为文件
  [ -d file ] 判断是否为目录
  [ -r file ]
  [ -w file ]
  [ -x file ]
  双目表达式
  单目表达式: [ -e file ][ ! -e file ]
  用法4: 嵌套if
  if CONDITION; then
  if CONDITION; then
  statement
  statement
  else
  statement
  statement
  fi
  else
  statement
  statement
  fi
  #!/bin/bash
  #
  read -p "Enter user: " name

  if>  #获取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 "用户$name不存在"
  fi
  编写脚本,由用户输入文件名,再由用户输入目录名称,将该文件备份到对应的目录 
  #!/bin/bash
  #
  read -p "输入备份文件(Full path): " file
  if [ -f $file ]; then
  #备份文件
  read -p "输入备份目录: " dir
  if [ -d $dir ]; then
  cp $file $dir
  echo "文件$file已被复制到$dir目录"
  else
  mkdir -p $dir
  cp $file $dir
  echo "文件$file已被复制到$dir目录"
  fi
  else
  echo "文件$file不存在"
  fi
  编写脚本,判断光盘是否挂载,显示其挂载点名称;否则由用户输入挂载点名称,挂载光盘
  #!/bin/bash
  #
  if df -hT | grep sr0 &> /dev/null; then
  mount_point=`df -hT | grep sr0 | awk '{print $NF}'`
  echo "光盘挂载点: $mount_point"
  else
  read -p "输入挂载点目录:" mount_point
  if [ -d $mount_point ]; then
  mount /dev/cdrom $mount_point &> /dev/null
  echo "光盘被挂载到$mount_point目录"
  else
  mkdir -p $mount_point
  mount /dev/cdrom $mount_point &> /dev/null
  echo "光盘被挂载到$mount_point目录"
  fi
  fi


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-556610-1-1.html 上篇帖子: linux中shell变量$#,$@,$0,$1,$2的含义解释: 下篇帖子: shell脚本管理磁盘
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表