【转载】shell中的条件判断、参数以及变量替换

【test 命令】 
      test 命令是 shell 的内部命令,用于计算作为其参数的表达式是真还是假。 如果表达式为真,则 test 返回0(注意与 C 语言 0 表示 false 不同),如果表达式为假,返回非 0 。 
      shell 提供了另外一个调用 test 命令的方式,就是用方括号 [ ] 来代替单词 test 。 
      调用 test 命令的格式为: 

?


1

2

test expr1 opr expr2 或是 [ expr1 opr expr2 ]

test opr expr1 或是 [ opr expr1 ]

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

【逻辑运算符】 
      -a      expr1 -a expr2      逻辑与 
      -o      expr1 -o expr2      逻辑或 
        !      !expr1                    逻辑非 

【数值判断】 
      -eq      if [ "$a" -eq "$b" ]      是否相等 
     -ne      if [ "$a" -ne "$b" ]      是否不相等 
      -gt       if [ "$a" -gt "$b" ]       是否大于 
      -ge      if [ "$a" -ge "$b" ]      是否大于等于 
      -lt        if [ "$a" -lt "$b" ]        是否小于 
      -le       if [ "$a" -le "$b" ]       是否小于等于

      <         (("$a" < "$b"))       小于(需要双括号) 
      <=      (("$a" <= "$b"))     小于等于(需要双括号) 
      >        (("$a" > "$b"))        大于(需要双括号) 
      >=      (("$a" >= "$b"))     大于等于(需要双括号) 

【字符串判断】 
      =       if [ "$a" = "$b" ]        字符串是否相等 
      !=      if [ "$a" != "$b" ]       字符串是否不等 
      -n      if [ -n str1 ]                字符串长度是否不等于 0 
      -z      if [ -z str2 ]                 字符串长度是否等于 0 
      ==      if [ "$a" == "$b" ]     与 = 等价(但有例外)。 

【文件判断】 
      -b file      若文件存在且是一个块特殊文件
      -c file      若文件存在且是一个字符特殊文件
      -d file      若文件存在且是一个目录
      -e file      若文件存在
      -f file      若文件存在且是一个规则文件(普通文件)
      -g file      若文件存在且设置了SGID位的值
      -h file      若文件存在且为一个符合链接
      -k file      若文件存在且设置了”sticky”位的值
      -p file      若文件存在且为一已命名管道
      -r file      若文件存在且可读
      -s file      若文件存在且其大小大于零
      -u file      若文件存在且设置了SUID位
      -w file      若文件存在且可写
      -x file      若文件存在且可执行
      -o file      若文件存在且被有效用户ID所拥有

【命令行参数/位置变量】 
      $0      脚本的名字 
      $1, $2, ..., $9      脚本第 1 个到第 9 个命令行参数 
      $#      命令行参数的个数 
      $@ 或是 $*      所有命令行参数 
      $?      最后一条命令的退出状态 
      $$      正在执行进程的 ID(PID) 

给位置变量赋值: 

?


1

2

3

4

[root@Betty ~]# set One Two Tree

[root@Betty ~]# echo $1 $2 $3

One Two Tree

[root@Betty ~]#

【shift 命令】 
      这条命令可以对位置参数进行移动,每次调用都会导致:$1=$2、$2=$3、$3=$4.... 
      以下代码可以打印出所有的参数 

?


1

2

3

4

5

while [ -n "$1" ]

do

    echo $1

    shift

done

【变量替换(赋值)】 
      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 并退出 

【正则表达中的特殊字符】 
行末:$       
行首:^ 
空格:\s 

行末空格:\s\+$ 
行首空格:^\+\s 

【注】 
      当在对变量进行判断时最好将变量用双引号括起来,这样可以避免参数包含空格或是 TAB 带来的问题。如 " $HOME"、"$#" 等。 
      使用 [ expr ] 进行判定时,expr与 [ 及 ] 之间均必须有空格。 
       == 的功能在 [[ ]] 和 [] 中的行为是不同的 , 这个操作符将在 [[ ]] 结构中使用模式匹配 。 如下: 
[[ $a == z* ]]        # 如果 $a 以 "z" 开头(模式匹配)那么将为 true 

[[ $a == "z*" ]] # 如果 $a 等于 "z*" (字符匹配),那么结果为 true
[ $a == z* ]      # File globbing 和 word splitting 将会发生
[ "$a" == "z*" ] # 如果 $a 等于 z* (字符匹配),那么结果为 true

原文地址:http://www.cnblogs.com/maxupeng/archive/2011/07/02/2096551.html

时间: 2025-01-20 21:34:36

【转载】shell中的条件判断、参数以及变量替换的相关文章

JavaScript中的条件判断语句使用详解

这篇文章主要介绍了JavaScript中的条件判断语句使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下 在写一个程序,可能有一种情况,当你需要采用一个路径出给定两个路径.所以,需要使用条件语句,让程序来做出正确的决策和执行正确的行动. JavaScript支持其用于执行根据不同的条件不同的操作条件语句.在这里,我们将解释if..else语句. JavaScript支持if..else语句的形式如下: if 语句 if...else 语句 if...else if... 语句. if 语

详解Python中的条件判断语句

  这篇文章主要介绍了Python中的条件判断语句,是Python入门中的基础知识,需要的朋友可以参考下 一个else语句可以使用if语句结合起来.如果在if语句中的条件表达式解析为0或false值,那么else语句包含代码执行. else语句是可选的声明,并if语句下面最多只有一个else语句. 语法: if ... else语句的语法是: ? 1 2 3 4 if expression: statement(s) else: statement(s) 例子: ? 1 2 3 4 5 6 7

system.out.printf()-java中输出中的条件判断输出

问题描述 java中输出中的条件判断输出 public void showLine(){ System.out.println("直线"+A+"*x"+B+"*y"+C+"=0"); } 我想在B>0时在输出B的前面加一个+号,但是直接在里面用条件?:让输出+判断它说类型不对,可不可以直接在里面就判断了就输出了呢?不用写if再输出 解决方案 System.out.println("直线"+A+&quo

linux中Shell中过滤、判断字母的例子

在Shell中过滤.判断字母方法: 方法一. [root@SHELL-X64 scripts]# abc=1ab8ddd90      [root@SHELL-X64 scripts]# echo ${abc//[0-9]} abddd 方法二. [root@SHELL-X64 scripts]# echo $abc | sed 's#[0-9]##g' abddd 方法三. [root@SHELL-X64 scripts]# abc=123 [root@SHELL-X64 scripts]#

Swift中的条件判断、循环、跳转语句基础学习笔记_Swift

一.引言 一种编程语言的强大与否,很大程度上取决于其提供的程序流程控制方案,就如使用汇编语言实现复杂的程序流程是一件痛苦的事情.Swift中提供了许多强大的流程控制语句,例如快速遍历for-in,while循环,repeat-while循环,switch选择等,需要注意的是,在Swift2.2中,for(a;b;c)循环已经被弃用掉,并且Swift中的Switch语句也更加强大,可以处理任意数据类型. 二.for-in循环 配合范围运算符,for-in循环可以用来执行确定次数的循环,示例如下:

Shell脚本IF条件判断和判断条件总结_linux shell

前言:      无论什么编程语言都离不开条件判断.SHELL也不例外. 复制代码 代码如下:       if list then           do something here       elif list then           do another thing here       else          do something else here       fi     EX1: 复制代码 代码如下: #!/bin/sh SYSTEM=`uname -s`   

JavaScript中的条件判断语句使用详解_基础知识

 在写一个程序,可能有一种情况,当你需要采用一个路径出给定两个路径.所以,需要使用条件语句,让程序来做出正确的决策和执行正确的行动. JavaScript支持其用于执行根据不同的条件不同的操作条件语句.在这里,我们将解释if..else语句. JavaScript支持if..else语句的形式如下:     if 语句     if...else 语句     if...else if... 语句. if 语句: if语句是基本的控制语句,它允许JavaScript来作出决定,有条件地执行语句.

详解C++编程中的条件判断语句if-else与switch的用法_C 语言

if-else 语句控制条件分支. 语法 if ( expression ) statement1 [else statement2] 备注 如果 expression 的值不为零,执行 statement1 .如果选项 else 存在,如果 expression 的值为零,执行 statement2. 表达式必须是算术或指针类型,或者必须是定义明确的整型或指针类型转换的类类型.有关转换器的信息,请参见标准转换. 在两个形式的 if 语句和 expression 语句中计算,可以具有除结构以外的

数据库中加条件判断来决定显示的数值

数据|数据库|条件|显示 SELECT jxc_yj_xzwz.clmc AS 物资名称, jxc_yj_xzwz.ggxh AS 规格型号,       CAST(jxc_yj_xzwz.sl AS int) AS 数量, ISNULL(scdwbmk.dwmc, '') AS 所属部门,       CASE jxc_yj_xzwz.syqk WHEN '0' THEN '未使用' ELSE '使用' END AS 使用情况,       SUBSTRING(CONVERT(varchar,