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