Shell脚本接收有空格参数问题

来源:互联网 发布:淘宝卖家在哪里看等级 编辑:程序博客网 时间:2024/06/07 01:54

上一篇博客写如何将Shell中的带空格参数传个python文件,这里写Shell如何接收外部传入的带空格参数。
例子是在网上看到的,亲测好用!!!
需要传入七个参数,最后一个是一个带有空格字符串,所以传入的时候有点问题,会自动识别空格,默认会将空格前的当作第7个参数,以下是传入的参数:

MD duanwf 23742 CDR_CALL_YYYYMMDD /home/duanwf/asiainfo/export/T141015001_20141014.avl & fetch first 100000 rows only

最后的“fetch first 100000 rows only”为第七个参数,但是识别的时候只获取到fetch

解决办法:

可以通过@7换成echo ${@:7},这样将自动识别到的第7个开始,全部获取到作为最后第7个参数,参数获取改为:

#!/bin/bashDBSCHEMA=$1DBUSER=$2DBPASSWORD=$3TABLENAME=$4FILEPATH=$5DELIMITER=$6EXPORTLIMIT=`echo ${@:7}`

补充:

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 n1表示第一个参数,$2表示第二个参数…
带参数的函数示例:

#!/bin/bashfunWithParam(){    echo "The value of the first parameter is $1 !"    echo "The value of the second parameter is $2 !"    echo "The value of the tenth parameter is $10 !"    echo "The value of the tenth parameter is ${10} !"    echo "The value of the eleventh parameter is ${11} !"    echo "The amount of the parameters is $# !"    echo "The string of the parameters is $* !"}funWithParam 1 2 3 4 5 6 7 8 9 34 73

输出结果:

The value of the first parameter is 1 !The value of the second parameter is 2 !The value of the tenth parameter is 10 !The value of the tenth parameter is 34 !The value of the eleventh parameter is 73 !The amount of the parameters is 12 !The string of the parameters is 1 2 3 4 5 6 7 8 9 34 73 !"
注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。

另外,还有几个特殊字符用来处理参数:

$# 传递到脚本的参数个数$* 以一个单字符串显示所有向脚本传递的参数$$    脚本运行的当前进程ID$! 后台运行的最后一个进程的ID$@$#相同,但是使用时加引号,并在引号中返回每个参数。$- 显示Shell使用的当前选项,与set命令功能相同。$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
1 0
原创粉丝点击