sed: O que significa o código de saída 2?

1

Caso

Estou tentando substituir todas as ocorrências de <value>*</value> em <value>file:\</value> em um arquivo designado test.txt .

Eu trabalho no Windows e uso o sed que eu instalei com o conjunto compilado do Win-32 de bash utils.

Eu uso o seguinte comando:

sed -n "s/<value>.*<\/value>/<value>file:\\<\/value>/g" "test.txt" > "test.txt.new"

Eu quero executar este comando como parte do script Wpkg .

Problema

Quando eu uso este comando da linha de comando, tudo funciona corretamente.

Mas quando eu uso este comando pelo script Wpkg :

<install cmd='%BASH%\sed -n "s/&lt;value&gt;.*&lt;\/value&gt;/&lt;value&gt;file:\\&lt;\/value&gt;/g;" test.txt" > "test.txt new"' />

... então o que eu obtenho é:

Exit code returned non-successful value (2) on command '%BASH%\sed -n "s/<value>
.*<\/value>/<value>file:\\<\/value>/g;" "test.txt" > "test.txt.new"'.

O acima indica que sed application retornou o código de saída 2. Além disso, o novo arquivo não foi criado.

Eu naveguei no google por um tempo muito longo e, para minha surpresa, sed parece ter uma documentação muito ruim. Não encontrei documentação sobre este código de saída.

Pergunta

Alguém tem uma pista do que o código de saída 2 significa sed ?

... ou uma solução alternativa?

(deve ser autônoma, com certeza pode usar ferramentas bash comuns)

    
por Michał Sacharewicz 07.08.2014 / 13:10

2 respostas

2

Não estou convencido de que seu problema esteja com sed . O% BASH% deve ser avaliado para um diretório no qual o executável sed reside e você confirmou isso? Porque minha expectativa seria que (se definido em tudo no Windows)% BASH% avaliaria o caminho para o executável bash , nesse caso, acrescentar "\ sed" a ele não faz sentido.

Em particular, observarei que o código de erro do DOS 2 é "Arquivo não encontrado" - talvez seja um problema encontrar o arquivo "% BASH% \ sed"?

    
por 21.03.2015 / 21:16
2

O sed emite um código de saída?

Most versions of sed do not, but check the documentation that came with whichever version you are using. GNU sed issues an exit code of 0 if the program terminated normally, 1 if there were errors in the script, and 2 if there were errors during script execution.

Fonte A FAQ do SED :

    
por 07.08.2014 / 13:36