As aspas duplas não protegem as barras invertidas que estão dentro do sed -e "s|\|\\|g"
das tentativas do shell de analisá-las. Se você usar um exemplo mais simples, poderá ver isso com mais facilidade:
$ echo 'blah\blah'| sed -e "s|\|blah|g"
sed: -e expression #1, char 10: unterminated 's' command
$ echo 'blah\blah'| sed -e 's|\|blah|g'
blahblahblah
Se você quiser usar o primeiro formulário do seu sed
, precisará alterná-lo para aspas simples, em vez de para o dobro.
$ figlet -t "Foo Bar" | sed -e 's|\|\\|g'
_____ ____
| ___|__ ___ | __ ) __ _ _ __
| |_ / _ \ / _ \ | _ \ / _' | '__|
| _| (_) | (_) | | |_) | (_| | |
|_| \___/ \___/ |____/ \__,_|_|
Se você tiver que usar aspas duplas, precisará de mais barras invertidas para escapar do shell e sed
:
$ figlet -t "Foo Bar" | sed -e "s|\\|\\\\|g"
_____ ____
| ___|__ ___ | __ ) __ _ _ __
| |_ / _ \ / _ \ | _ \ / _' | '__|
| _| (_) | (_) | | |_) | (_| | |
|_| \___/ \___/ |____/ \__,_|_|