How do I forward parameters to other command in ba

2019-01-30 03:50发布

Inside my bash script, I would like to parse zero, one or two parameters (the script can recognize them), then forward the remaining parameters to a command invoked in the script. How can I do that?

3条回答
SAY GOODBYE
2楼-- · 2019-01-30 04:07

bash supports subsetting parameters (see Subsets and substrings), so you can choose which parameters to process/pass like this:

open new file and edit it: vim r.sh

echo "params only 2    : ${@:2:1}"
echo "params 2 and 3   : ${@:2:2}"
echo "params all from 2: ${@:2:99}"

run it:

chmod u+x r.sh
 ./r.sh 1 2 3 4 5 6 7 8 9 10

the result is:

params only 2    : 2
params 2 and 3   : 2 3
params all from 2: 2 3 4 5 6 7 8 9 10
查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-01-30 04:14

Use the shift built-in command to "eat" the arguments. Then call the child process and pass it the "$@" argument to include all remaining arguments. Notice the quotes, they should be kept, since they cause the expansion of the argument list to be properly quoted.

查看更多
神经病院院长
4楼-- · 2019-01-30 04:18

bash uses the shift command:

e.g. shifttest.sh:

#!/bin/bash
echo $1
shift
echo $1 $2

shifttest.sh 1 2 3 produces

1
2 3
查看更多
登录 后发表回答