加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux在 命令行if,Linux命令之if - Bash中的条件判断语句

发布时间:2023-02-01 11:38:58 所属栏目:Linux 来源:
导读:  用途说明

  Shell中的条件判断语句,与其他编程语言类似。

  如果需要知道有哪些条件判断方式,通过man test就可以得到帮助。

  常用格式

  格式一

  if 条件; then

  语句
  用途说明
 
  Shell中的条件判断语句,与其他编程语言类似。
 
  如果需要知道有哪些条件判断方式,通过man test就可以得到帮助。
 
  常用格式
 
  格式一
 
  if 条件; then
 
  语句
 
  fi
 
  格式二
 
  if 条件; then
 
  语句
 
  else
 
  语句
 
  fi
 
  格式三
 
  if 条件; then
 
  语句
 
  elif 条件; then
 
  语句
 
  fi
 
  格式四
 
  if 条件; then
 
  语句
 
  elif 条件; then
 
  语句
 
  else
 
  语句
 
  fi
 
  使用示例
 
  示例一
 
  Bash代码
 
  if["foo"="foo"];then
 
  echoexpressionevaluatedastrue
 
  fi
 
  [root@jfht ~]#if [ "foo" = "foo" ]; then
 
  >echo expression evaluated as true
 
  >fi
 
  expression evaluated as true
 
  [root@jfht ~]#
 
  示例二
 
  Bash代码
 
  if["foo"="foo"];then
 
  echoexpressionevaluatedastrue
 
  else
 
  echoexpressionevaluatedasfalse
 
  fi
 
  [root@jfht ~]#if [ "foo" = "foo" ]; then
 
  >echo expression evaluated as true
 
  >else
 
  >echo expression evaluated as false
 
  >fi
 
  expression evaluated as true
 
  [root@jfht ~]#
 
  示例三
 
  Bash代码
 
  T1="foo"
 
  T2="bar"
 
  if["$T1"="$T2"];then
 
  echoexpressionevaluatedastrue
 
  else
 
  echoexpressionevaluatedasfalse
 
  fi
 
  [root@jfht ~]#T1="foo"
 
  [root@jfht ~]#T2="bar"
 
  [root@jfht ~]#if [ "$T1" = "$T2" ]; then
 
  >echo expression evaluated as true
 
  >else
 
  >echo expression evaluated as false
 
  >fi
 
  expression evaluated as false
 
  [root@jfht ~]#
 
  示例四 判断命令行参数数量
 
  文件 if_4.sh
 
  Bash代码
 
  #!/bin/sh
 
  if["$#"!="1"];then
 
  echo"usage:$0"
 
  exit1
 
  fi
 
  [root@smsgw root]#cat if_4.sh
 
  #!/bin/sh
 
  if [ "$#" != "1" ]; then
 
  echo "usage: $0 "
 
  exit 1
 
  fi
 
  [root@smsgw root]#chmod +x if_4.sh
 
  [root@smsgw root]#./if_4.sh
 
  usage: ./if_4.sh
 
  [root@smsgw root]#./if_4.sh hello
 
  [root@smsgw root]#
 
  示例五 判断文件中是否包含某个字符串
 
  Bash代码
 
  ifgrep-qroot/etc/passwd;then
 
  echoaccountrootexists
 
  else
 
  echoaccountrootnotexist
 
  fi
 
  [root@jfht ~]#if grep -q root /etc/passwd; then
 
  >echo account root exists
 
  >else
 
  >echo account root not exist
 
  >fi
 
  account root exists
 
  [root@jfht ~]#
 
  示例六 判断文件是否存在
 
  Bash代码
 
  if[-emyfile];then
 
  echomyfileexists
 
  else
 
  touchmyfile
 
  echomyfilecreated
 
  fi
 
  [root@jfht ~]#if [ -e myfile ]; then
 
  >echo myfile exists
 
  >else
 
  >touch myfile
 
  >echo myfile created
 
  >fi
 
  myfile created
 
  [root@jfht ~]#if [ -e myfile ]; then
 
  >echo myfile exists
 
  >else
 
  >touch myfile
 
  >echo myfile created
 
  >fi
 
  myfile exists
 
  [root@jfht ~]#ls -l myfile
 
  -rw-r--r-- 1 root root 0 10-09 20:44 myfile
 
  示例七 判断两个文件是否相同
 
  Bash代码
 
  echo1>file1
 
  echo2>file2
 
  if!diff-qfile1file2;then
 
  echofile1file2diff
 
  else
 
  echofile1file2same
 
  fi
 
  [root@jfht ~]#echo 1 >file1
 
  [root@jfht ~]#echo 2 >file2
 
  [root@jfht ~]#if ! diff -q file1 file2; then
 
  >echo file1 file2 diff
 
  >else
 
  >echo file1 file2 same
 
  >fi
 
  Files file1 and file2 differ
 
  file1 file2 diff
 
  [root@jfht ~]#
 
  问题思考
 
  1. 怎么判断字符串非空?
 
  2. 怎么判断文件非空?
 
  3. 怎么判断文件可执行?
 
  4. 怎么判断目录?
 
  5. 怎么判断数值大小判断?
 
  相关资料
 
  【1】BASH Programming6.1 Dry Theory
 
  比如比较字符串、判断文件是否存在及是否可读等,通常用"[]"来表示条件测试。
 
  注意:这里的空格很重要。要确保方括号的空格。笔者就曾因为空格缺少或位置不对linux语句,而浪费好多宝贵的时间。
 
  if ....; then
 
  ....
 
  elif ....; then
 
  ....
 
  else
 
  ....
 
  fi
 
  [ -f "somefile" ] :判断是否是一个文件
 
  [ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
 
  [ -n "$var" ] :判断$var变量是否有值
 
  [ "$a" = "$b" ] :判断$a和$b是否相等
 
  -r file用户可读为真
 
  -w file用户可写为真
 
  -x file用户可执行为真
 
  -f file文件为正规文件为真
 
  -d file文件为目录为真
 
  -c file文件为字符特殊文件为真
 
  -b file文件为块特殊文件为真
 
  -s file文件大小非0时为真
 
  -t file当文件描述符(默认为1)指定的设备为终端时为真
 
  含条件选择的shell脚本 对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包括比较运算、判断文件是否存在等。
 
  基本的if条件命令选项有: - eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
 
  -ne —比较两个参数是否不相等
 
  -lt —参数1是否小于参数2
 
  -le —参数1是否小于等于参数2
 
  -gt —参数1是否大于参数2
 
  -ge —参数1是否大于等于参数2
 
  -f — 检查某文件是否存在(例如,if [ -f "filename" ])
 
  -d — 检查目录是否存在
 
  几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在
 

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!