快捷搜索: 王者荣耀 图灵学院

一个例子解读$#,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引起来。

经验分享 程序员 微信小程序 职场和发展