shell 编程中使用到得if语句内判断参数

  –b 当file存在并且是块文件时返回真

  -c 当file存在并且是字符文件时返回真

  -d 当pathname存在并且是一个目录时返回真

  -e 当pathname指定的文件或目录存在时返回真

  -f 当file存在并且是正规文件时返回真

  -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真

  -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效

  -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真

  -p 当file存在并且是命令管道时返回为真

  -r 当由pathname指定的文件或目录存在并且可读时返回为真

  -s 当file存在文件大小大于0时返回真

  -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真

  -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。

  -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

  UNIX Shell 里面比较字符写法:

  -eq 等于

  -ne 不等于

  -gt 大于

  -lt 小于

  -le 小于等于

  -ge 大于等于

  -z 空串

  = 两个字符相等

  != 两个字符不等

  -n 非空串

  -------------------------------------------------------------------------

  更为详细的说明:

  运算符 描述 示例

  文件比较运算符

  -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ]

  -d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ]

  -f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]

  -L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ]

  -r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ]

  -w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ]

  -x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]

  filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

  filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

  字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

  -z string 如果 string 长度为零,则为真 [ -z $myvar ]

  -n string 如果 string 长度非零,则为真 [ -n $myvar ]

  string1 = string2 如果 string1 与 string2 相同,则为真 [ $myvar = one two three ]

  string1 != string2 如果 string1 与 string2 不同,则为真 [ $myvar != one two three ]

  算术比较运算符

  num1 -eq num2 等于 [ 3 -eq $mynum ]

  num1 -ne num2 不等于 [ 3 -ne $mynum ]

  num1 -lt num2 小于 [ 3 -lt $mynum ]

  num1 -le num2 小于或等于 [ 3 -le $mynum ]

  num1 -gt num2 大于 [ 3 -gt $mynum ]

  num1 -ge num2 大于或等于 [ 3 -ge $mynum ]

  脚本示例:

  #!/bin/bash

  # This script prints a message about your weight if you give it your

  # weight in kilos and hight in centimeters.

  if [ ! $# == 2 ]; then

  echo "Usage: $0 weight_in_kilos length_in_centimeters"

  exit

  fi

  weight="$1"

  height="$2"

  idealweight=$[$height - 110]

  if [ $weight -le $idealweight ] ; then

  echo "You should eat a bit more fat."

  else

  echo "You should eat a bit more fruit."

  fi

  # weight.sh 70 150

  You should eat a bit more fruit.

  # weight.sh 70 150 33

  Usage: ./weight.sh weight_in_kilos length_in_centimeters

  位置参数 $1, $2,..., $N,$#代表了命令行的参数数量, $0代表了脚本的名字,第一个参数代表$1,第二个参数代表$2,以此类推,参数数量的总数存在$#中,上面的例子显示了怎么改变脚本,如果参数少于或者多余2个来打印出一条消息。

  执行,并查看情况。

  # bash -x tijian.sh 60 170

  + weight=60

  + height=170

  + idealweight=60

  + '[' 60 -le 60 ']'

  + echo 'You should eat a bit more fat.'

  You should eat a bit more fat.

  其中-x用来检查脚本的执行情况。

linux shell编程if语句内判断参数详解【ZT】相关推荐

  1. Linux从入门到精通系列之SHELL编程循环语句语法及实例详解(forwhileuntil)

    前言 Shell作为一种脚本编程语言,同样了包含了循环,分支等其他程序控制结构,从而能够轻松完成更加复杂.强大的功能.我们今天就来认识for.while.case语句的具体应用. 插个小广告吧,虽然我 ...

  2. shell编程数组与冒泡算法排序详解

    shell编程数组与冒泡算法排序详解 一 数组的四种表达方式 二 数组的增删改查操作 三 数组传参 3.1 主程序向函数传数组参数 3.2 从函数返回数组到主程序 四 冒泡算法排序 一 数组的四种表达 ...

  3. 秒懂的shell编程数组与冒泡算法排序详解

    shell编程数组与冒泡算法排序详解 一.数组的四种表达方式 二 .数组的增删改查操作 三 .数组传参 3.1 主程序向函数传数组参数 3.2 从函数返回数组到主程序 四 .冒泡算法排序 一.数组的四 ...

  4. Linux C编程--线程操作2--线程同步详解

    linux线程同步之互斥 在windows中,为了让多个线程达到同步的目的,在对于全局变量等大家都要用的资源的使用上,通常得保证同时只能由一个线程在用,一个线程没有宣布对它的释放之前,不能够给其他线程 ...

  5. linux重定向到某目录文件,linux shell中12 21 1file_path重定向语法详解

    当初在shell中, 看到">&1"和">&2"始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出. 在 shell 程 ...

  6. Linux网络编程——I/O复用之select详解

    https://blog.csdn.net/lianghe_work/article/details/46506143 一.I/O复用概述 I/O复用概念: 解决进程或线程阻塞到某个 I/O 系统调用 ...

  7. Linux系统编程33:进程信号之详解信号的捕捉过程,用户态和内核态及其切换,sigaction和signal

    文章目录 (1)用户态和内核态 (2)用户态和内核态的切换 (3)内核是如何实现信号的捕捉 (4)sigaction (1)用户态和内核态 我们说过,每个Linux进程有4GB的地址空间 其中0-3G ...

  8. Linux系统编程3:基础篇之详解Linux软件包管理器yum

    文章目录 (1)什么是软件包 A:软件包 B:注意事项 C:yum基本使用 (2)安装rzsz (1)什么是软件包 A:软件包 区别Windows,在Linux下安装软件,第一种方法是下载程序源代码, ...

  9. Linux系统编程2:基础篇之详解Linux中的权限问题

    文章目录 权限 (1)超级用户和普通用户 (2)Linux权限管理 A:文件访问者的分类 B:文件类型和访问权限 A:文件类型 B:基本权限 C:权限的表示方法 D:权限的设置 E:粘滞位 补: 权限 ...

最新文章

  1. java图片序列化_Java中的强大武器——对象的序列化
  2. 近年推荐系统论文调查汇总
  3. python调用ping命令_我可以创建一个脚本来测试是否可以在python服务器上远程使用SSH和PING命令吗? - python...
  4. LeetCode-Add Two Numbers
  5. 用闭包实现重载的过程学习闭包
  6. 附件中可能包含对计算机有害的病毒.附件可能无法正确显示,广西成人高校计算机实用基础统考理论试题(A卷)...
  7. bin文件编辑_为MediaWiki安装可视化编辑器VisualEditor
  8. python 日志输出变量_python中记录打印的log模块logging的用法实例
  9. php事件编程,php如何实现基于事件驱动的网络编程
  10. 前端遮罩层实现_cocos creator--游戏开奖功能组件《刮刮卡》特效实现
  11. access窗体独立运行_由浅入深学习网络设备模拟器HCL 第一篇 安装与运行
  12. [RMI TCP Connection(10.0.20.175:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for
  13. 雅礼集训Day3-难题选讲
  14. 【如何在12306网站上购买上中下卧铺火车票呢?】
  15. DGIOT物联网开源平台——腾讯云轻量应用服务器部署
  16. 立体几何相关公式推导理解(球体、台体体积)
  17. 开发者 发展 程序物语
  18. 高速钢(HSS)金属切削刀具的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. uni-app的渲染数据和三种调接口的方法
  20. 银行、券商们的下一代App该往哪里走?

热门文章

  1. TensorFlow 教程 --教程--2.5TensorFlow运作方式入门
  2. 电大java语言与面向对象程序设计基础_6406Java语言与面向对象程序设计基础A卷...
  3. android 服务端 servlet webservice,Tomcat 上如何部署Servlet及Android中如何与服务器通信(12页)-原创力文档...
  4. PHP生成url的函数,U函数:URL地址生成
  5. 有时间同情渣男傻女,不如想想人都是怎么被臆想出来的爱情给坑了
  6. 【Leetcode】Python实现字符串转整数 (atoi) - 详细备注,保证小白看懂
  7. Windows 平台安装 MongoDB
  8. 扫地机器人开机充电还是关机充电器_新手机是开机充电好,还是关机充电好,老司机告诉你...
  9. 英特尔预计第12代酷睿H系列处理器将有超过100款设备采用
  10. 因遭做空机构指控存在金融欺诈 法拉第未来聘请律所展开调查