转自: 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 ]
运算符 描述 示例
文件比较运算符
-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 ]
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
# 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
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.
+ height=170
+ idealweight=60
+ '[' 60 -le 60 ']'
+ echo 'You should eat a bit more fat.'
You should eat a bit more fat.
相关推荐
此方法接收两个参数:第一个参数`sURL`是待收藏页面的URL;第二个参数`sTitle`是收藏时显示的页面标题。示例如下: ```html <a href="#" onClick="javascript:window.external.AddFavorite('http://www.sdi1.com','...
其中`url`参数表示要添加至收藏夹的网页地址,`title`参数则用于指定收藏条目的名称。例如: ```javascript function addCookie() { if (document.all) { // 检查是否为IE浏览器 window.external.addFavorite('...
7. **路由参数**:如果收藏功能与页面路由关联,可能会使用Vue Router的动态路由匹配,将收藏ID作为参数传递。 8. **本地存储**:为了实现用户关闭浏览器后仍能保留收藏信息,开发者可能会使用`localStorage`或`...
- **函数定义**:定义了一个名为`addBookmark`的函数,该函数接收两个参数:`url`和`title`,分别代表要收藏的网址和收藏项的标题。 - **具体实现逻辑**: - **Firefox**:调用`window.sidebar.addPanel()`方法来...
- `()">收藏本站</a>`:这是一个带有`rel="sidebar"`属性的超链接,当用户点击时,触发`addFavorite`函数。`rel="sidebar"`属性是为了兼容Opera浏览器,尽管Opera不再使用这个属性,但它曾经是添加书签的标准之一。 ...
它需要两个参数,一个是窗口句柄(通常为0,表示无特定关联的窗口),另一个是CSIDL常量,表示要获取的特殊文件夹类型。对于收藏夹,对应的CSIDL常量是`CSIDL_FAVORITES`。 2. `SHGetPathFromIDList`:这个函数用于...
此对象的参数为完整的.url文件路径,包括文件名和扩展名。 5. **设置目标路径**:对快捷方式对象的`TargetPath`属性进行设置,将其指向想要收藏的网页URL。 6. **保存快捷方式**:最后,调用`Save()`方法将快捷...
- 第二个参数为名称,即收藏夹中显示的标题或描述。 2. **HTML与事件处理**:在HTML中,通常会使用`<a>`标签结合`onclick`事件来触发JavaScript函数。 ```html (document.location.href, document.title)" ...
参数的名称为“是否带滚动条”,类型为“逻辑型(bool)”,可以被省略。是否带滚动条。 参数的名称为“对象的窗口句柄”,类型为“整数型(int)”,可以被省略,提供参数数据时只能提供变量。窗口句柄。 操作系统...
这个名为"js示例经典收藏.rar"的压缩包文件很可能包含了一系列精选的JavaScript代码示例,旨在帮助开发者掌握和理解JavaScript的核心概念以及常见应用。以下是根据标签"js 30个 绝对 经典示例"推测的可能知识点: 1...
函数内局部数组的 `sizeof`** ```c void Func(char str[100]) { // sizeof(str) = 4 } ``` **解析**: - 当数组作为函数参数传递时,它会被退化为指针,因此 `sizeof(str)` 实际上得到的是指针的大小,而非数组的...
以上是关于“精品收藏经典批处理代码”的一些核心知识点。通过学习和掌握这些内容,我们可以编写出高效、实用的批处理脚本来简化日常工作,提高生产力。在实际应用中,批处理代码的灵活性和强大功能使其在系统管理、...
这里的`url`参数是需要添加到收藏夹的网页地址,`filename`是快捷方式的名称,而`savepath`则指定了收藏夹下的子目录。如果`savepath`为`"Favorites"`,则表示直接在收藏夹根目录下创建;如果是其他值,则会在收藏夹...
1. **控制流语句**:包括if-else、switch-case、for、foreach、while等,它们是程序逻辑的基础,用于决定代码执行的顺序和条件。 2. **类与对象**:C#是面向对象的语言,类是对象的蓝图,而对象则是类的实例。理解...
1. **命令行参数**:批处理脚本可以接受命令行参数,通过`%1`、`%2`等变量来访问这些参数,实现脚本的灵活性。 2. **条件语句**:如`if`和`else`,用于根据不同的条件执行不同的命令。 3. **循环结构**:如`for`和`...
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()** - ...
5. **光电参数**: - 光强(IV):在IF = 20mA时,未提供具体数值 - 半光强视角(2θ1/2):120度(IF = 20mA) - 峰值波长(λP):630nm(IF = 20mA) - 主波长范围(λd):615nm到630nm(IF = 20mA) - 半...
创建一个猜硬币任务,要求能够让用户手动输入参数,得到计算结果。运行窗体界面如图 3-1 所示。 任务 3.1 任务实施 (一)创建项目和窗体 * 创建一个“ Windows 应用程序”项目。 * 向窗体上添加一个文本框控件,...
2. **控制结构**:包括条件语句(if...else、switch)、循环(for、while、do...while)和跳转语句(break、continue)。这些是编写逻辑流程控制的关键。 3. **函数**:JavaScript的函数是第一类对象,可以作为变量...
这段代码定义了一个名为`shoucang`的JavaScript函数,该函数接收两个参数:页面标题(Title)和页面URL(geturl)。函数首先检查浏览器类型,如果是IE浏览器(通过`document.all`检测),则使用`window.external....