So it seems like there are extra quotes being inserted around the contents of noquotes.txt, but not around quotes.txt.
Isto é apenas Bash sendo útil. Você notará que vai colocar aspas em torno das coisas sempre que houver um símbolo que, de outra forma, seria interpretado pelo Bash. Ele age exatamente como você faria, usando citações apenas quando necessário. Tente colocar qualquer um dos seguintes em quotes.txt:
s/a$/a/g
s/"hi"/"bye"/g
A lista continua e continua.
Agora, voltemos à sua pergunta original. Primeiro de tudo, o seu sed
imprime uma mensagem estranha. A partir de set -x
, é óbvio que a entrada é "s/a/b/g"
, não ""s/a/b/g"
. Eu não confiaria nessa mensagem. Aqui está o que o GNU sed 4.2.1 imprime para "s/a/b/g"
:
$ sed -e '"s/a/b/g"'
sed: -e expression #1, char 1: unknown command: '"'
Bastante claro: como o primeiro caracter é um nome de comando e não existe um comando chamado "
, sed
não tem ideia do que fazer.