Você não pode voltar de ./mycommand.sh $MYOPT
para o valor de MYOPT
. É por isso que você não encontrou uma maneira de fazer isso: é impossível. mycommand.sh
não recebe informações suficientes para reconstruir o valor original.
Por exemplo, se o valor de MYOPT
for *
, então mycommand.sh
será chamado com a lista de nomes de arquivos no diretório atual. Não tem como saber como essa lista foi construída.
Se você sabe que o valor de MYOPT
segue determinadas regras , talvez seja possível reconstruí-lo. A versão simples dessas regras é:
- O valor não contém nenhum dos caracteres
\[*?
ou guia ou nova linha. - O valor não inicia nem termina com um espaço e não contém espaços consecutivos.
De acordo com essas suposições, "$*"
in mycommand.sh
fornecerá o valor de MYOPT
. Mas tenha em mente que isso não pode funcionar em geral.
A solução adequada é consertar seu ambiente. Na linguagem de shell, $MYOPT
não significa "pegue o valor de MYOPT
", isso significa "pegue o valor de MYOPT
, divida-o de acordo com o valor de IFS
e trate cada parte resultante como padrão curinga que é expandido se corresponder a pelo menos um arquivo ”. A maneira de escrever "pegue o valor de MYOPT
" é "$MYOPT"
ou, mais geralmente, use $MYOPT
entre aspas duplas .