shift妙用之解决shell编程中的入参问题
来源:互联网 发布:生日提醒软件 编辑:程序博客网 时间:2024/06/01 09:43
shell编程经常会遇到参数个数不定的这种情况,这种情况怎么处理呢?shift就要闪亮登场了
我说过了,shell是我的常规武器,目前虽然还不纯熟,但是我爱shell这门语言,在Linux下面混,总要写脚本。程序员是有基因,对编程语言是有偏好的,你让我写C代码,我会觉得很爽,会有困难,会有痛苦的摸索和学习,但是,我愿意;学习shell/python,我也很乐意,甚至Lisp这种冷门的语言我也充满了好奇,虽然现在Go和Erlang我一点也不懂,但是我按耐不住对这两种语言的兴趣,只要我抽出手来,一定会和他们缠绵一番。有爱就会有恨,我痛苦地意识到到自己是个很情绪化的程序员,哪怕我一遍遍地骂自己bitch is bitchy,一遍遍的告诉自己要端正态度,学习CSS/HTML/仍然让我痛苦的死去活来,可以预计的是,让我学习Java我也会很痛苦(我也清楚地明白,痛苦之烈一定不如学习CSS/HTML的痛苦)。我知道我在跑题,我贱人就是矫情,但是我压抑的太难受了,不找个地方发泄一下,我会把自己憋坏。
shell编程经常会遇到参数个数不定的这种情况,这种情况怎么处理呢?shift就要闪亮登场了。
$#是入参的个数,
$@是当前所有的入参
$0是脚本的名字
$1是第一个入参,$2是第二个入参。。。。
Bash定义了$1到$9,一共9个位置变量,这就决定了我们不能无限制的用$11之类的来获取更多的入参。
这时候就需要用shift了,shift会将入参右移,如下图所示:
们看一段shell代码,加深理解:
输出:
现在,如果入參的个数不定,如何处理入参呢?
上面这个伪码片段表明如何处理不定的入参,通过store_input,我们将每一个入参保存下来,然后,我们就可以处理了。
最后的最后,给出一个处理不定参数的例子:
输出如下:
我说过了,shell是我的常规武器,目前虽然还不纯熟,但是我爱shell这门语言,在Linux下面混,总要写脚本。程序员是有基因,对编程语言是有偏好的,你让我写C代码,我会觉得很爽,会有困难,会有痛苦的摸索和学习,但是,我愿意;学习shell/python,我也很乐意,甚至Lisp这种冷门的语言我也充满了好奇,虽然现在Go和Erlang我一点也不懂,但是我按耐不住对这两种语言的兴趣,只要我抽出手来,一定会和他们缠绵一番。有爱就会有恨,我痛苦地意识到到自己是个很情绪化的程序员,哪怕我一遍遍地骂自己bitch is bitchy,一遍遍的告诉自己要端正态度,学习CSS/HTML/仍然让我痛苦的死去活来,可以预计的是,让我学习Java我也会很痛苦(我也清楚地明白,痛苦之烈一定不如学习CSS/HTML的痛苦)。我知道我在跑题,我贱人就是矫情,但是我压抑的太难受了,不找个地方发泄一下,我会把自己憋坏。
shell编程经常会遇到参数个数不定的这种情况,这种情况怎么处理呢?shift就要闪亮登场了。
$#是入参的个数,
$@是当前所有的入参
$0是脚本的名字
$1是第一个入参,$2是第二个入参。。。。
Bash定义了$1到$9,一共9个位置变量,这就决定了我们不能无限制的用$11之类的来获取更多的入参。
这时候就需要用shift了,shift会将入参右移,如下图所示:
们看一段shell代码,加深理解:
root@manu:~/code/shell/temp# cat test.sh#!/bin/shuntil [ $# -eq 0 ]doecho "$@"shiftdone
输出:
root@manu:~/code/shell/temp# ./test.sh 10 9 8 7 6 5 4 3 2 110 9 8 7 6 5 4 3 2 19 8 7 6 5 4 3 2 18 7 6 5 4 3 2 17 6 5 4 3 2 16 5 4 3 2 15 4 3 2 14 3 2 13 2 12 11
现在,如果入參的个数不定,如何处理入参呢?
until [ -z "$1" ] # Until all parameters used updostore_input $1shiftdone
上面这个伪码片段表明如何处理不定的入参,通过store_input,我们将每一个入参保存下来,然后,我们就可以处理了。
最后的最后,给出一个处理不定参数的例子:
manu@manu:~/code/shell/temp$ cat sum.sh#!/bin/shsum=0until [ -z $1 ]dosum=`echo $sum+$1 |bc`shiftdoneecho $sum
输出如下:
manu@manu:~/code/shell/temp$ ./sum.sh 1 2 3 4 5 6 7 8 9 1055
- shift妙用之解决shell编程中的入参问题
- Shell编程之shift使用
- Shell编程之Shift的用法
- Linux shell的shift的妙用
- Shell编程Shift
- shell中的shift命令
- Shell之shift
- shell中的shift 与shift Number
- shell编程中shift用法
- Linux Shell中的shift命令
- Shell编程中Shift的用法
- Shell编程中Shift的用法
- Shell编程中Shift的用法
- Shell编程中Shift的用法
- Shell编程中Shift的用法
- Shell编程中Shift的用法
- Shell编程中Shift的用法
- Shell编程中Shift的用法
- PHP中fwrite与file_put_contents性能测试代码
- Android入门前言(一)之------Android应用开发入门五问
- mysql 不等于 符号写法
- Bash的For循环(根据每次递增的数)
- Android入门教程(二)之------环境搭建
- shift妙用之解决shell编程中的入参问题
- Android入门教程(三)之------导入现有Android工程
- qt中显示汉字乱码问题
- Android入门教程(四)之------Android工程目录结构介绍
- PHP-Fcgi下PHP的执行时间设置方法
- Android入门教程(五)之------第一个Android工程HelloAndroid
- OSG 裁剪回调
- linux kernel data struct : 随机产生一副扑克牌
- access 2003 取消数据库密码