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 .