Não sei o que está acontecendo no restante do seu script, mas você não está lidando corretamente com os parâmetros posicionais. A configuração de CERTNAME
to $@
irá ajustá-lo para uma string contendo todos os parâmetros, incluindo --include
. Então você está executando cut
nesta string, que não tenho certeza do que você espera fazer. Se você quiser dar um loop nos parâmetros, você pode fazer algo assim:
#!/bin/bash
if [[ "$1" = "--issue" ]]; then
certs=("${@:2}")
else
:
# something else here
fi
for cert in "${certs[@]}"; do
echo "$cert"
# process each cert here
done
exit
Dado seu último exemplo, isso será impresso:
c_domain.com_rsa
c_www.domain.com_rsa
Isso coloca todos os seus parâmetros posicionais excluindo $1
em uma matriz e faz um loop sobre ela. Se você quiser colocar o restante dos parâmetros em uma string, apenas remova os parênteses assim: certs="${@:2}"
Usar $@
dessa maneira é um pouco confuso: quando você diz "$@"
, ele expande os parâmetros posicionais em palavras, ou seja, $1
.. $n
. No entanto, usá-lo em um contexto de matriz, como o que estou fazendo, incluirá $0
, que é o nome do script. É por isso que estou começando a fatia no elemento 2.
Como eu disse, há muitas outras coisas acontecendo aqui, mas isso deve responder à pergunta sobre parâmetros.