Eu tenho um script, que não faz nada útil além de executar os argumentos posicionais. (Estou ciente dos riscos de segurança e o script não faz nada útil porque é um exemplo de trabalho mínimo.)
$ cat script
> #!/usr/bin/env bash
>
> eval "${*}"
$ cat "docu ment"
> Lorem ipsum dolor sit amet
O que eu gostaria de fazer é chamar o script com ./script cat "docu ment"
, ou ./script cat docu\ ment
, mas as aspas ou o caractere de escape desaparecem e o script tentará cat docu ment
, o que não funciona. Como eu corrigiria a cotação em tal caso?
EDIT: O que eu realmente quero fazer é invocar um comando quantas vezes até retornar um código de saída bem-sucedido ou tentar n vezes. Meu script está assim:
#!/usr/bin/env bash
# Try command several times, until it reports success (exit code 0)
# or I give up (tried n times)
tryMax=10
try=1
# Do until loop in bash
while
eval "${@}"
exitcode="${?}"
[[ "${exitcode}" -ne 0 && "${try}" -lt "${tryMax}" ]]
do (( try++ ))
done
if [[ "${exitcode}" -ne 0 ]]; then
echo -n "I tried hard, but did not manage to make this work. The exit code "
echo "of the last iteration of this command was: ${exitcode}."
exit "${exitcode}"
fi