文章转自:

http://www.cnblogs.com/maxupeng/archive/2011/07/02/2096551.html

一、test命令

  test命令是shell内部命令,它计算作为其参数的表达式是真还是假。

  如果表达式为真,则test返回0(注意与C语言0表示false不同),如果表达式为假,返回非0。

  shell提供了另外一个调用test命令的方式,就是用方括号[]来代替单词test。

  调用test命令的格式为:

    test expr1 opr expr2 或是 [ expr1 opr expr2 ]

    test opr expr1 或是 [ opr expr1 ]

  (注意方括号与表达式之间的空格必须存在)

二、逻辑运算符

  -a  expr1 -a expr2  逻辑与

  -o  expr1 -o expr2  逻辑或

  !  !expr1      逻辑非

三、数值判断

  -eq  num1 -eq num2  是否相等

  -ne  num1 -ne num2  是否不相等

  -gt  num1 -gt num2  是否大于

  -ge  num1 -ge num2  是否大于等于

  -lt  num1 -lt num2  是否小于

  -le  num1 -le num2  是否小于等于

四、字符串判断

  =  str1 = str2  字符串是否相等

  !=  str1 != str2  字符串是否不等

  -n  -n str1    字符串长度是否不等于0

  -z  -z str2    字符串长度是否等于0

五、文件判断

  -r  -r filename  文件是否存在且可读

  -w  -w filename  文件是否存在且可写

  -s  -s filename  文件是否存在且长度非0

  -f  -f filename  文件是否存在且是普通文件

  -d  -d filename  文件是否存在且是一个目录

六、命令行参数/位置变量

  $0  脚本的名字

  $1, $2, ..., $9  脚本第1个到第9个命令行参数

  $#  命令行参数的个数

  $@ 或是 $*  所有命令行参数

  $?  最后一条命令的退出状态

  $$  正在执行进程的ID(PID)

  给位置变量赋值:

  set One Two Three

  echo $1 $2 $3

  结果显示:One Two Three

  shift命令:

    这条命令可以对位置参数进行移动,每次调用都会导致:$1=$2、$2=$3、$3=$4....

    以下代码可以打印出所有的参数

    while [ -n "$1" ]

    do

      echo $1

      shift

    done

七、

  当在对变量进行判断时最好将变量用双引号括起来,这样可以避免参数包含空格或是TAB带来的问题。

  如:”$HOME“、"$#"

八、变量替换(赋值)

  shell提供了变量替换功能,使用户能够检查变量的值并根据选项改变它的值。

  $variable    保存在variable中的值

  ${variable}    保存在variable中的值

  ${variable:-string}  如果variable的值非空,则值为variable,否则值为string

  ${variable:+string}  如果variable的值非空,则值为string,否则值为空

  ${variable:=string}  如果variable的值非空,则值为variable,否则值为string且variable的值设置为string

  ${variable:?string}  如果variable的值非空,则值为variable,否则显示string并退出

shell中的条件判断、参数以及变量替换的更多相关文章

  1. shell中的条件判断以及与python中的对比

    shell中比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注意:这里的空格很重要.要确保方括号的空格. if ....; then          ...

  2. linux shell中的条件判断语句

    http://bbs.chinaunix.net/thread-396805-1-1.html shell 判断语句 流程控制 "if" 表达式 如果条件为真则执行then后面的部 ...

  3. shell中的条件判断if和测试

    (一)条件判断 if 中-z 到 -d 的意思 [ -a file ] 若file存在,则为真. [ -b file ] 若file存在且是一个块特殊文件,则为真. [ -c file ] 若file ...

  4. shell中的条件判断

    read命令 命令的语法: read [参数] 变量名 常用的参数如下: -t timeout 设定超时时间. -p prompt 设定提示信息,该提示信息将会显在光标前. 条件测试: 条件测试可以判 ...

  5. Shell编程中的条件判断(条件测试)

    Shell中的条件判断(测试)类型: 1) 整数测试 2) 字符测试 3) 文件测试 条件测试的表达式:        (注: expression 与 [] 之间空格不能省略) [ expressi ...

  6. Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件

    一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...

  7. Shell脚本IF条件判断和判断条件总结

    转自:http://m.jb51.net/article/56553.htm 这篇文章主要介绍了Shell脚本IF条件判断和判断条件总结,本文先是给出了IF条件判断的语法,然后给出了常用的判断条件总结 ...

  8. sql 语句中使用条件判断case then else end

    sql 语句中使用条件判断case then else end范例: SELECT les.[nLessonNo] FROM BS_Lesson AS les WHERE les.[sClassCod ...

  9. Shell学习(六)——条件判断总结

    Shell学习(六)--条件判断总结 [1]https://www.cnblogs.com/zhw-626/p/8528001.html [2]https://www.cnblogs.com/yizh ...

随机推荐

  1. log4j2 不使用配置文件,动态生成logger对象

    大家平时使用Log4j一般都是在classpath下放置一个log4j的配置文件,比如log4j.xml,里面配置好Appenders和Loggers,但是前一阵想做某需求的时候,想要的效果是每一个任 ...

  2. strstr 函数的实现

    strstr函数:返回主串中子字符串的位置后的所有字符. #include <stdio.h> const char *my_strstr(const char *str, const c ...

  3. django url路径与模板中样式相对路径的问题

    static目录下有css和js及image等文件夹,里面放置网站的一些静态文件,static位于网站根目录下,django中配置静态文件这个就细说,网上都有,昨天在添加新内容时发现一个问题,我的ur ...

  4. 我觉得有意思的JavaScript题目(01-05更新中)

    对于以下js题目均来至于网络中.有的来至于文章之中,有的也许来至于问答题型中.如果您有更好的问题解释,请留言交流! 1.相关问题描述:到底该怎么去理解闭包? 代码片段A !function(){ va ...

  5. iOS第八课——Navigation Controller和Tab bar Controller

    今天我们要学习Navigation Controller和Tab bar Controller. Navigation Controller是iOS编程中比较常用的一种容器,用来管理多个视图控制器. ...

  6. flex引起height:100%失效

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. Android SDK 墙内更新方法 速度杠杠的

  8. 聊聊 Web 项目二维码生成的最佳姿势

    在设计和实现的过程之后,你永远不知道部署上去的程序会已什么样的姿势运行. 本篇借一次生成二维码逻辑的不同实现,阐述 Web 项目中二维码生成的正确姿势. 文中如有批量,欢迎各位看客老爷拍砖.试运行前5 ...

  9. web 前端常用组件【06】Upload 控件

    因为有万恶的IE存在,所以当Web项目初始化并进入开发阶段时. 如果是项目经理,需要知道客户将会用什么浏览器来访问系统. 明确知道限定浏览器的情况下,你才能从容的让手下的封装必要的前端组件. 本篇文章 ...

  10. 您还在招聘网上海量投简历然后等面试机会吗?那你已经OUT了。

    工作也可以来找我们.不行看完这篇. 从毕业到现在,换了2次工作.每次都在为招工组烦恼.找工作这个问题,不管是应届生还是职场老手.都面临一个问题就是找工作的平台.纵观目前的找工作的形式,主流的不外乎就两 ...