Bash: dois comandos em parênteses em dólar não têm o mesmo comportamento

2

Eu não entendo e porque, no Bash:

  • echo $(hostname --fqdn) funciona,
  • echo $(id -un) não ( id: –un: No such user ).

Backticks dão os mesmos resultados.

Existe alguma boa prática para usar essa notação? O comando id tem algo especial em relação ao seu uso de tal forma?

Abaixo, alguns detalhes parecem funcionar em outros sistemas:

  • lsb_release -a : SUSE Linux Enterprise Server 11 (x86_64),
  • which id : / usr / bin / id,
  • id -un funciona sozinho.
por PomCompot 13.03.2014 / 09:44

1 resposta

5

Eu notei uma diferença sutil entre o comando postado:

echo $(id -un)

e a mensagem de erro:

id: –un: No such user

Os dois "hífens" são diferentes, o segundo sendo um pouquinho mais longo. Parece que a mensagem de erro foi copiada e colada do original, mas o comando foi redigitado. O comando original provavelmente contém o tipo errado de hífen. Isso explica por que ninguém conseguiu reproduzir a mensagem de erro.

Esse tipo de erro geralmente tem um dos dois motivos:

  • O código foi copiado de websites, onde foi digitado usando um marcador de texto / sintaxe incorreto.

  • O código foi digitado em um ambiente de edição inadequado, como o Microsoft Word. O Word pode alterar algo que você digita em uma variante melhor tipográfica, mas inesperada, como diferentes hifens, citações diferentes ou algum outro sinal de espaço.

Por coincidência, havia apenas um desafio no concurso de popularidade em Codegolf , onde uma resposta usava um "truque" semelhante para gerar uma diferença que não estava visível: link

    
por 13.03.2014 / 11:17