文章转自:

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. netty3升netty4一失眼成千古恨

    老项目是netty3的,本来想直接改到netty5,但是netty5居然是只支持jdk1.7,很奇怪jdk1.6和jdk1.8都不行..为了兼容jdk1.6加上netty4本来和netty5就差别不大 ...

  2. Java Generics and Collections-8.1

    8.1 Take Care when Calling Legacy Code 通常,泛型都是在编译时检查的,而不是运行时.便意识检查可以提早通知错误,而不至于到运行时才出问题. 但有时后编译时检查不一 ...

  3. ASP.net 实现禁止用户重复登录

    本文先为大家介绍如何利用缓存Cache方便地实现此功能. Cache与Session这二个状态对像的其中有一个不同之处,Cache是一个全局对象,作用的范围是整个应用程序,所有用户:而Session是 ...

  4. linux-windows资源共享

    先安装samba,然后 sudo mount -t cifs //192.168.1.111/Jack_Win_Share /media/ -o username=Jack,password=1,io ...

  5. Maven项目中的pom.xml详解【转】

    什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url, ...

  6. 某CRM项目招投标工作的感悟

    最近参与了某公司的CRM项目招标工作, 由于此项目涉及到的二级单位比较多,以及项目金额比较大,所以此招标工作从准备到宣布中标一直持续了大概3个月时间,中间过程发生了一些颇有意思的事情,因为保密的原因无 ...

  7. [Django 2]第一个django应用

    1)增加应用 python3 manage.py startapp app-name 2. settings.py中,“INSTALLED_APPS”添加应用名称. 3. 在templates中新增网 ...

  8. Eclipse+Maven创建webapp项目<一>(转)

    还在为jar下载而烦恼吗?还在为jar依赖关系而烦恼吗?还在为jar冲突而烦恼吗?强大的maven项目管理工具来拯救你们呢?自动下载jar,自动下载jar依赖包.你什么都不用做,只需要在中央仓库中co ...

  9. UIDynamic - 推动行为: UIPushBehavior

    用途: 从一个点移动到另外一个点; 相关属性: mode : UIPushBehaviorModeContinuous  //推移模式 angle : setAngle  //推移角度 magnitu ...

  10. Spinner

    资源的方式添加 安卓中的下拉框 Spinner可以通过xml string中配置 <string-array name="spingarr"> <item> ...