`
emcome
  • 浏览: 304232 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

收藏:if 内带参数

 
阅读更多

转自: http://www.cnblogs.com/luwikes/archive/2011/09/14/2176584.html

 

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.

 

 

 

分享到:
评论

相关推荐

    兼容IE,火狐的收藏本页

    此方法接收两个参数:第一个参数`sURL`是待收藏页面的URL;第二个参数`sTitle`是收藏时显示的页面标题。示例如下: ```html <a href="#" onClick="javascript:window.external.AddFavorite('http://www.sdi1.com','...

    js加入收藏功能

    其中`url`参数表示要添加至收藏夹的网页地址,`title`参数则用于指定收藏条目的名称。例如: ```javascript function addCookie() { if (document.all) { // 检查是否为IE浏览器 window.external.addFavorite('...

    VUE收藏插件、功能代码.rar

    7. **路由参数**:如果收藏功能与页面路由关联,可能会使用Vue Router的动态路由匹配,将收藏ID作为参数传递。 8. **本地存储**:为了实现用户关闭浏览器后仍能保留收藏信息,开发者可能会使用`localStorage`或`...

    网站收藏代码

    - **函数定义**:定义了一个名为`addBookmark`的函数,该函数接收两个参数:`url`和`title`,分别代表要收藏的网址和收藏项的标题。 - **具体实现逻辑**: - **Firefox**:调用`window.sidebar.addPanel()`方法来...

    所有浏览器通用的js添加收藏夹代码支持火狐

    - `()">收藏本站</a>`:这是一个带有`rel="sidebar"`属性的超链接,当用户点击时,触发`addFavorite`函数。`rel="sidebar"`属性是为了兼容Opera浏览器,尽管Opera不再使用这个属性,但它曾经是添加书签的标准之一。 ...

    delphi 读取本机收藏夹

    它需要两个参数,一个是窗口句柄(通常为0,表示无特定关联的窗口),另一个是CSIDL常量,表示要获取的特殊文件夹类型。对于收藏夹,对应的CSIDL常量是`CSIDL_FAVORITES`。 2. `SHGetPathFromIDList`:这个函数用于...

    Webbrowser添加到收藏夹

    此对象的参数为完整的.url文件路径,包括文件名和扩展名。 5. **设置目标路径**:对快捷方式对象的`TargetPath`属性进行设置,将其指向想要收藏的网页URL。 6. **保存快捷方式**:最后,调用`Save()`方法将快捷...

    加入收藏全能代码

    - 第二个参数为名称,即收藏夹中显示的标题或描述。 2. **HTML与事件处理**:在HTML中,通常会使用`<a>`标签结合`onclick`事件来触发JavaScript函数。 ```html (document.location.href, document.title)" ...

    蒋勇API支持库2.5.2带静态库(终极版)

    参数的名称为“是否带滚动条”,类型为“逻辑型(bool)”,可以被省略。是否带滚动条。 参数的名称为“对象的窗口句柄”,类型为“整数型(int)”,可以被省略,提供参数数据时只能提供变量。窗口句柄。 操作系统...

    js示例经典收藏.rar

    这个名为"js示例经典收藏.rar"的压缩包文件很可能包含了一系列精选的JavaScript代码示例,旨在帮助开发者掌握和理解JavaScript的核心概念以及常见应用。以下是根据标签"js 30个 绝对 经典示例"推测的可能知识点: 1...

    C经典笔试.pdf经典收藏

    函数内局部数组的 `sizeof`** ```c void Func(char str[100]) { // sizeof(str) = 4 } ``` **解析**: - 当数组作为函数参数传递时,它会被退化为指针,因此 `sizeof(str)` 实际上得到的是指针的大小,而非数组的...

    精品收藏经典批处理代码

    以上是关于“精品收藏经典批处理代码”的一些核心知识点。通过学习和掌握这些内容,我们可以编写出高效、实用的批处理脚本来简化日常工作,提高生产力。在实际应用中,批处理代码的灵活性和强大功能使其在系统管理、...

    C#将指定网页添加到收藏夹的方法

    这里的`url`参数是需要添加到收藏夹的网页地址,`filename`是快捷方式的名称,而`savepath`则指定了收藏夹下的子目录。如果`savepath`为`"Favorites"`,则表示直接在收藏夹根目录下创建;如果是其他值,则会在收藏夹...

    C#经典功能源码收藏

    1. **控制流语句**:包括if-else、switch-case、for、foreach、while等,它们是程序逻辑的基础,用于决定代码执行的顺序和条件。 2. **类与对象**:C#是面向对象的语言,类是对象的蓝图,而对象则是类的实例。理解...

    精心收藏的50个批处理

    1. **命令行参数**:批处理脚本可以接受命令行参数,通过`%1`、`%2`等变量来访问这些参数,实现脚本的灵活性。 2. **条件语句**:如`if`和`else`,用于根据不同的条件执行不同的命令。 3. **循环结构**:如`for`和`...

    收藏的PHP常用函数 推荐收藏保存

    if (($timeArr[0] >= 0 && $timeArr[0] ) && ($timeArr[1] >= 0 && $timeArr[1] ) && ($timeArr[2] >= 0 && $timeArr[2] )) return true; else return false; } return false; } ``` **5. DateDiff()** - ...

    2021-2022收藏资料宏齐光 0603-0.6T高亮红色HQ19-2132SURC规格书.doc

    5. **光电参数**: - 光强(IV):在IF = 20mA时,未提供具体数值 - 半光强视角(2θ1/2):120度(IF = 20mA) - 峰值波长(λP):630nm(IF = 20mA) - 主波长范围(λd):615nm到630nm(IF = 20mA) - 半...

    第3章C#程序的流程控制.pptx

    创建一个猜硬币任务,要求能够让用户手动输入参数,得到计算结果。运行窗体界面如图 3-1 所示。 任务 3.1 任务实施 (一)创建项目和窗体 * 创建一个“ Windows 应用程序”项目。 * 向窗体上添加一个文本框控件,...

    个人脚本收藏(Myjs)

    2. **控制结构**:包括条件语句(if...else、switch)、循环(for、while、do...while)和跳转语句(break、continue)。这些是编写逻辑流程控制的关键。 3. **函数**:JavaScript的函数是第一类对象,可以作为变量...

    兼容firefox火狐、IE6IE7IE8加入收藏,设为首页代码

    这段代码定义了一个名为`shoucang`的JavaScript函数,该函数接收两个参数:页面标题(Title)和页面URL(geturl)。函数首先检查浏览器类型,如果是IE浏览器(通过`document.all`检测),则使用`window.external....

Global site tag (gtag.js) - Google Analytics