Com base nos comentários, meu entendimento é que você deseja descartar (ou armazenar em algum lugar) o primeiro argumento e depois usar o restante dos argumentos como argumentos para outro script ou comando do qual está chamando no script.
Se for assim, você pode fazê-lo facilmente, e não precisa definir uma variável ( FLAGS
ou qualquer outra coisa) para passar os parâmetros do script para o comando dentro do seu script. Veja o seguinte exemplo:
#!/bin/bash
set -x
original_first_arg="$1" # Use this line if you need to save the value to use later.
shift
mycommand "$@"
O comando shift
é um bash
incorporado. Por si só (sem dar qualquer número), apenas joga fora o primeiro argumento do script (parâmetro posicional). A partir do manpage:
shift [n]
The positional parameters from n+1 ... are renamed to $1 ....
Parameters represented by the numbers $# down to $#-n+1 are
unset. n must be a non-negative number less than or equal to
$#. If n is 0, no parameters are changed. If n is not given,
it is assumed to be 1. If n is greater than $#, the positional
parameters are not changed. The return status is greater than
zero if n is greater than $# or less than zero; otherwise 0.
Em seguida, "$@"
é expandido para os parâmetros exatos que você forneceu ao script, menos o primeiro $1
, pois foi descartado pelo comando shift
.
Leitura adicional: