linux 比较运算符

linux 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所指定的用户拥有时返回真。

  更为详细的说明:
---------------------------------------------------------------------------------------------
  运算符                      描述                             示例


  文件比较运算符


  -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 ]



Linux Shell 里面比较字符写法:

    -eq   等于

  -ne    不等于

  -gt    大于

  -lt    小于

  -le    小于等于

  -ge   大于等于

  -z    空串

  =    两个字符相等

  !=    两个字符不等

  -n    非空串

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

    -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用来检查脚本的执行情况。hell 各种比较运算符 

linux 比较运算符

时间: 2024-11-09 22:45:10

linux 比较运算符的相关文章

Linux 各种运算符

目录 - 算术运算符 - 关系运算符 - 逻辑运算符 - 按位运算符 - 文件测试符 - 算术运算符 算术运算符,常用的有+.-.*./.%.++.--.** + - 加法运算符 [[email protected] ~]$ expr 1 + 1 2 [[email protected] ~]$ echo $(( 1 + 1 )) 2 - - 减法运算符 [[email protected] ~]$ expr 1 - 1 0 [[email protected] ~]$ echo $(( 1 -

合并_01php基础语法(8days)笔记

一.入门指引 1.php是什么? PHP是什么? Hypertext Preprocessor,超文本预处理器 Personal Home Page,个人主页 是一种在服务器端执行的脚本语言,可嵌入到 HTML中,尤其适合 web 开发. ? php可以做什么? 网站,web程序 B/S架构 ? ? 命令行脚本 桌面应用程序 ? ? 二.安装Apache 制作一台服务器,来提高网页服务,只要安装了一个能提供网页服务的软件的电脑,就可以称之为网页服务器. 常见的网页服务器软件 Apache IIS

linux shell “(())” 双括号运算符使用

导读 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展. 使用方法: 语法: ((表达式1,表达式2-)) 特点: 1.在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等. 2.在双括号结构中,所有变量

嵌入式linux C++语言(六)——运算符重载

嵌入式linux C++语言(六)--运算符重载 运算符重载的本质是函数重载. 一.重载基础 1.运算符重载的语法 返值类型 operator 运算符名称(形参表列){    重载实体;} 2.友元重载 可以将运算符重载函数声明位友元函数 #include <iostream> using namespace std; class Complex { public:     Complex(float x=0, float y=0)         :_x(x),_y(y){}     voi

Linux 之 shell 比较运算符

运算符 描述 示例 文件比较运算符 -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 如果 fil

linux shell &ldquo;(())&rdquo; 双括号运算符使用

linux shell "(())" 双括号运算符使用 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展.   使用方法: 语法: ((表达式1,表达式2-)) 特点: 1.在双括号结构中,所有表

linux运算符学习1

linux运算符 本文搬运自https://blog.csdn.net/zhuzige521888/article/details/78457031 1. 逻辑的(and)与(or) &&   逻辑的 AND 的意思, -a 也是这个意思 ||  逻辑的 OR 的意思, -o 也是这个意思 不同的场合会限制用法 2.运算符相关 运算符号代表意义 =  等于  应用于:整型或字符串比较 如果在[] 中,只能是字符串 !=  不等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串 &l

Linux mysql shell脚本 变量和环境变量 位置参数 预定义变量 运算符 判断 流程控制 for循环 与用户交互 函数

mysql 1. 卸载旧版本 rpm -qa | grep mysql 检查是否有旧版本 查询结果:mysql-libs-5.1.73-7.el6.x86_64 rpm -e mysql-libs 删除旧版本 rpm -e --nodeps mysql-libs 强行删除 2. 安装mysql 2.1 安装源码需要编译 下载c的编译工具 yum -y install make gcc-c++ cmake bison-devel ncurses-devel 2.2 xftp连接上传 xftp连接上

linux学习之shell脚本 ------- 引用与运算符

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 变量和替换操作,在脚本中执行变量替换时最容易犯的一个错误就是引用错误,所以有必要看一下各种引号的代表的意义与作用. 引用: 双引号" " 使用双引号可引用除字符$.`.\ 外的任意字符或字符串.如下所示: [email protected]:~/develop/workspace/shell_workspace$ echo -e "hello $SHEL