Por que um e comercial em URL causa falha de algum comando no Mac OS X Terminal?

0

Por que um e comercial em URL causa falha no seguinte comando?

Eu quero abrir uma página da web executando o Safari no Terminal, colocando a URL como um argumento.

Isso funciona como esperado:

open -a safari "http://endic.naver.com/search.nhn?sLn=en&searchOption=all&query=good"

Mas assim que as citações forem removidas, não funcionará como esperado:

open -a safari http://endic.naver.com/search.nhn?sLn=en&searchOption=all&query=good

Em vez disso, ele retorna:

[3] 5395
[4] 5396
[1]   Done                    open -a safari http://endic.naver.com/search.nhn?sLn=en
[2]   Done                    searchOption=all

Parece que o "e" comercial na URL foi tratado como "executar o comando anterior em segundo plano", embora não haja espaço após o "e" comercial na URL.

    
por George 31.05.2014 / 17:31

1 resposta

2

O "e" comercial é um delimitador de comando (semelhante ao ponto e vírgula ; ), mas indica que o comando deve ser executado em segundo plano.

If a command is terminated by the control operator &, the shell executes the command in the background in a subshell. The shell does not wait for the command to finish, and the return status is 0. Commands separated by a ; are executed sequentially; the shell waits for each command to terminate in turn. The return status is the exit status of the last command executed

Portanto, você executou três comandos:

  • open -a safari "http://endic.naver.com/search.nhn?sLn=en no plano de fundo
  • searchOption=all no plano de fundo
  • query=good no primeiro plano

Os dois últimos são simplesmente atribuições de variáveis, portanto, nenhum erro foi exibido (como é frequentemente o caso quando isso acontece acidentalmente).

though there is no space following the ampersand in the URL.

Isso não é necessário para & ou ; finalizar um comando:

$ ls;pwd
Applications Desktop      Documents    Downloads    Library      Movies       Music
Pictures     Projects     Public       Work
/Users/danielbeck
    
por 31.05.2014 / 17:35

Tags