您的位置:首页 > 其它

一个例子解读$#,gt,expr,shift及循环的使用。

2014-03-31 10:56 204 查看
例子:利用shift计算所有参数的乘积(假设参数均为int)

#!/bin/bash

result = 1

while [ $# -gt 0 ]

#注意空格,方括号为条件判断,$#参数个数,$@参数单独引,$*参数一起引;该句表示参数个数大于0,如果用-eq就是等于0,-ne就是不等于0;

do

result = 'expr $result /* $1'

#expr读入参数,记录它的值,并将结果标准输出

shift

#shift用法:位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令

相当于shift 1。

非常有用的 Unix 命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 Shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*。若

用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等。在 shift 命令执行前变量 $1 的值在 shift

命令执行后就不可用了。

done

echo $result

exit 0

#举例expr,要想返回字符串fd任何字符,在abcdef中出现的第一个字符的位置,则输入expr index abcdef fd

显示结果为 4 //即先出现的是d字符,所以是第4个位置。

扩展举例:

计算字符串的长度。我们可以用awk中的length(s)进行计算。我们也可以用echo中的echo ${#string}进行计算,当然也可以expr中的expr length $string 求出字符串的长度。

[root@localhost fgm]# string="hello,everyone my name is xiao_f"

[root@localhost fgm]# echo ${#string}

32

[root@localhost fgm]# expr length "$string"

32

注意:当string字符串中有空格时必须用双引号把$string引起来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: