一个例子解读$#,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引起来。
#!/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引起来。
相关文章推荐
- 昨天写的使用<cctype>的一个例子
- 一个使用虚函数的例子 ---&gt; 南郁老师
- 使用eclipse创建JPA-->:附带一个简单的例子
- 改变一个list<Map<String,Object>>,并给他重新赋值,不能使用新循环,要使用旧循环
- Python入门的36个例子 之 35 -> try – 一个使用的例子
- 一个例子使用条件和循环
- ListView折叠展开demo(使用expendsListView第三方包和网上的一些例子都不好使,自己写了一个)
- 使用jQuery+HttpHandler+xml模拟一个三级联动的例子
- 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库
- <转载>仅一行代码,使用浏览器打造一个在线编辑器
- 使用Hibernate的一个完整例子
- 使用libdwraf写的一个读取GCC -g参数编译生成的调试信息的例子
- <C语言>使用一个二维数组实现学生姓名管理系统,要求不能使用链表
- 使用JNDI的一个简单iBatis的例子
- 一个epoll/aio/eventfd结合使用的简单例子
- 发一个使用 GridView 对数据小类进行分别汇总的例子
- 使用C#的HttpWebRequest模拟登陆访问人人网(很好的一个例子,理解http的基本工作方式)
- Yii学习笔记之二(使用gii生成一个简单的例子)
- 很好的一个 Spring MVC 解读---<context:component-scan/>
- <c:if test=""></c:if>如何判断空(使用例子)