一个例子解读$#,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引起来。
    原文作者:xiaof_567
    原文地址: https://blog.csdn.net/xiaof_567/article/details/22651867
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞