Bash在$@中最后一个参数之前获取所有命令行参数
时间:2020-01-09 10:42:02 来源:igfitidea点击:
我正在编写一个包装器bash shell脚本,该脚本将从命令行将最后一个参数(域名)获取到名为$_domain
的shell变量中。
如何在$@中的最后一个参数之前找到所有其他参数,并将其存储在名为$allargs的shell变量中。
这样我就可以像下面这样传递它们:
/path/to/real/binary $allargs $_domain
我如何在Unix之类的操作系统下使用bash shell做到这一点?
您可以将所有命令行参数或者参数存储在bash数组中,如下所示:
array=( $@ )
首先,您需要找出数组的长度:
len=${#array[@]}
接下来,从数组(即$@存储在数组中)获取最后一个命令行参数:
_domain=${array[$len-1]}
最后,提取所有命令行参数并将其存储在$@中最后一个参数之前:
args=${array[@]:0:$len-1}
放在一起:
#!/bin/bash array=( $@ ) len=${#array[@]} _domain=${array[$len-1]} _args=${array[@]:0:$len-1} echo "Domain: $_domain" echo "All Args before $_domain are: $_args"
如下运行:
./script -p -y --zzz theitroad.local
输出示例:
Domain: theitroad.local All Args before theitroad.local are: -p -y --zzz
另一个示例运行:
$ ./script -p -y --zzz --delete theitroad.local
输出示例:
Domain: theitroad.local All Args before theitroad.local are: -p -y --zzz --delete