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

例子:利用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 求出字符串的长度。

  1. [root@localhost fgm]# string="hello,everyone my name is xiao_f"
  2. [root@localhost fgm]# echo ${#string}
  3. 32
  4. [root@localhost fgm]# expr length "$string"
  5. 32
  6. 注意:当string字符串中有空格时必须用双引号把$string引起来。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值