Em um script, os caracteres #!
não são especiais neste contexto. O fragmento printf -- "#!${opt_E}"
chama o comando printf
com dois argumentos: --
e #!
concatenados com o valor da variável opt_E
. O argumento --
informa a printf
que, mesmo que haja argumentos subseqüentes começando com -
, eles não devem ser interpretados como opções; isso não faz diferença aqui, pois #!${opt_E}
não começa com -
. As aspas duplas em torno de #!${opt_E}
protect #
são interpretadas como um caractere de início de comentário e protegem o valor de opt_E
de ser dividido em palavras separadas que são interpretadas como padrões de caractere curinga.
Se o valor de opt_E
não contiver nenhum caractere %
ou \
, esse comando imprime #!
seguido pelo valor de opt_E
, sem nova linha final. Em geral, o comando interpreta o valor de opt_E
como um formato printf.
Se você tentar isso em um shell interativo, poderá ver efeitos estranhos devido a !
ser interpretado como um caractere de expansão de histórico, que recupera automaticamente os comandos anteriores. Para evitar isso, adicione um \
antes de !
. !
também é interpretado literalmente entre aspas simples: printf -- '#!${opt_E}'
.
Se você estiver repetindo um script, terá que definir opt_E
para o valor correto primeiro. Se você estiver tentando depurar um script, adicione set -x
na segunda linha (insira-o logo abaixo da linha #!
inicial): o shell imprimirá um traço de cada linha à medida que for executado.