Как перенаправить параметры в другую команду в bash script?

Внутри моего bash script, я хотел бы проанализировать нуль, один или два параметра (script может их распознать), а затем перенаправить остальные параметры в команду, вызванную в script. Как я могу это сделать?

Ответ 1

Используйте shift встроенную команду, чтобы "съесть" аргументы. Затем вызовите дочерний процесс и передайте ему аргумент "[email protected]", чтобы включить все остальные аргументы. Обратите внимание на кавычки, они должны храниться, поскольку они приводят к правильному цитированию списка аргументов.

Ответ 2

bash используется команда shift:

например. shifttest.sh:

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

shifttest.sh 1 2 3 производит

1
2 3

Ответ 3

bash поддерживает параметры подмножества (см. Подмножества и подстроки), поэтому вы можете выбрать, какие параметры обрабатывать/проходить следующим образом:

открыть новый файл и отредактировать его: vim r.sh

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

запустите его:

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

результат:

params only 2    : 2
params 2 and 3   : 2 3
params all from 2: 2 3 4 5 6 7 8 9 10