Use o comando shift
para empurrar os argumentos posicionais conforme necessário. No seu caso, fazer shift 1
separaria $1
(ou seja, o primeiro argumento) do resto dos argumentos. Da mesma forma, shift 2
mudaria os primeiros 2 argumentos da lista de argumentos e assim por diante. E lembre-se sempre de citar suas variáveis / argumentos para não deixarem passar pela divisão de palavras pelo shell.
#!/bin/bash
exec_command -k -q "$1"
shift 1
for i in "$@"; do
grep --color=always "$i" file
done
Consulte a página do manual shift
para entender mais. Esta é uma opção compatível com POSIX disponível em shells.
Ou outra maneira de fazer ( bash
specific) uma expansão baseada em índice na lista de argumentos $@
como abaixo para iniciar o loop do segundo elemento nas alas.
#!/bin/bash
exec_command -k -q "$1"
for i in "${@:2}"; do
grep --color=always -- "$i" file
done
Além de iterar sobre os argumentos posicionais na primeira abordagem, você faz exatamente
for i; do
grep --color=always -- "$i" file
done