转 linux shell编程if语句内判断参数

转两个URL,自己备用。

 

原址如下:

http://linux.ctocio.com.cn/285/9326285.shtml

shell 编程中使用到得if语句内判断参数

  –b 当file存在并且是块文件时返回真

  -c 当file存在并且是字符文件时返回真

  -d 当pathname存在并且是一个目录时返回真

  -e 当pathname指定的文件或目录存在时返回真

  -f 当file存在并且是正规文件时返回真

  linux shell编程if语句内判断参数详解

  -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真

  -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效

  -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真

  -p 当file存在并且是命令管道时返回为真

  -r 当由pathname指定的文件或目录存在并且可读时返回为真

  -s 当file存在文件大小大于0时返回真

  -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真

  -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。

  -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

 

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

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

一、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并退出

 

 

 ========= 再加一个, URL: http://www.cppblog.com/fwxjj/archive/2009/09/04/95342.html

LinuxShell算术运算

Bash shell 的算术运算有四种方式:
1:使用 expr 外部程式

加法 r=`expr 4 + 5`
echo $r
注意! '4' '+' '5' 这三者之间要有空白
r=`expr 4 * 5` #错误
乘法 r=`expr 4 \* 5`

2:使用 $(( ))
r=$(( 4 + 5 ))
echo $r

3:使用 $[ ]

r=$[ 4 + 5 ]
echo $r

乘法
r=`expr 4 \* 5` 
r=$(( 4 * 5 ))
r=$[ 4 * 5 ]
echo $r

除法
r=`expr 40 / 5` 
r=$(( 40 / 5 ))
r=$[ 40 / 5 ]
echo $r

减法
r=`expr 40 - 5` 
r=$(( 40 - 5 ))
r=$[ 40 - 5 ]
echo $r

求余数
r=$[ 100 % 43 ]
echo $r

乘幂 (如 2 的 3 次方)
r=$(( 2 ** 3 ))
r=$[ 2 ** 3 ]
echo $r
注:expr 沒有乘幂

4:使用let 命令
加法:
n=10
let n=n+1
echo $n #n=11

乘法:
let m=n*10
echo $m

除法:
let r=m/10
echo $r


求余数:
let r=m%7
echo $r


乘冪:
let r=m**2
echo $r

虽然Bash shell 有四种算术运算方法,但并不是每一种都是跨平台的,建议使用expr。
另外,我们在 script 中经常有加1操作,以下四法皆可:
m=$[ m + 1]
m=`expr $m + 1`
m=$(($m + 1))
let m=m+1


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值