Quanto ./script.sh arg1 [arg2 arg3 ...]
, os argumentos de linha de comando arg1
, arg2
... pode ser obtido por $1
, $2
, ... Mas o número de argumentos é não fixo.
No script de shell, quero passar os argumentos a partir de arg2
um programa,
#/bin/bash
...
/path/to/a/program [I want to pass arg2 arg3 ... to the program]
...
Como eu poderia fazer isso, pois poderia haver um ou mais argumentos?
$@
?$@
informam ao shell que aspas duplas de cada parâmetro (algo interessante a ser feito se os parâmetros contiverem caracteres interessantes, como parênteses ou asteriscos). Se você não se preocupam com isso, uma planície$*
obras ...Você pode dividir os parâmetros posicionais usando a expansão de parâmetros. A sintaxe é:
Se
length
omitido, é considerado até o último valor.Como você passou do penúltimo para o último argumento, você precisa:
Exemplo:
fonte