Do seu snippet de código, a expressão sed
parece correta - ela substituirá todos os caracteres '0' pelos caracteres 'corretos'. Se você somente quiser que a saída do comando echo
seja atualizada, você pode colocar o comando sed
na saída de echo
, por exemplo:
some command date >> /file.txt echo $? | sed 's/0/correct/' >> /file.txt
(note que os comandos 'echo' e 'cat' não terão efeito na saída)
No contexto em que você está usando a opção -i
, na verdade é uma opção de linha de comando, em vez de um comando de script sed
- é uma seção diferente na página man
:
-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied)
Isso significa que ele atualizará o arquivo de origem (que é exatamente o que você deseja no seu exemplo).
No entanto, observe que neste exemplo, o código de saída que está sendo verificado é o código de saída de date
e não o seu comando. De fato, no seu exemplo, ele está verificando o código de saída de echo
, que eu suspeito ser ainda menos útil para você.
Uma maneira mais padrão de realizar essa verificação seria nos seguintes termos:
some command result=$? date >> /file.txt if [ $result -eq 0 ] then echo "Command finished successfully" >> /file.txt else echo "Command failed with exit code $result" >> /file.txt fi