No local sed
requer a criação de um arquivo de backup durante o processo. A opção -i
no sed
da Apple requer um argumento de extensão (para o arquivo de backup criado) e consome o próximo argumento. Isso significa que você está dizendo que deseja criar um arquivo de backup com a extensão " #s</head>#...
".
O erro significa que você está se referindo ao a
comando ppend . Eu estou indo supor que o valor de $1
começa com um a
. Porque -i
do argumento anterior sed
acha que este é o script a ser executado, em vez do caminho para o arquivo a ser alterado, e você obtém erros de acordo. Este é exatamente o erro que você obteria com a Apple sed
e um comando a
inválido:
$ sed a sed: 1: "a": command a expects \ followed by text
Forneça um argumento de extensão para -i
no seu comando sed
:
sed -i.bak "s#</head>#<style> @page { prince-shrink-to-fit: auto } .repository-with-sidebar.with-full-navigation .repository-content {width: 50px ! important;} </style>\n</head>#" "${1}/${2}/${i}.html"
e as coisas funcionarão (embora note que \n
não é um escape de nova linha). Se você usa aspas simples, pode até tirar o espaço de " !important
".
Os itens acima funcionarão no GNU sed
, mas observe que -i
não é um Opção POSIX e geralmente não é portável.
Muitas vezes é recomendado não usar a modificação no local de qualquer maneira, e lidar com o trabalho com uma cópia do arquivo explicitamente você mesmo. Isso depende de você, no entanto.
Você deve citar as expansões da variável ${1}
, etc. A citação apenas das barras é inútil, porque elas são sempre literais.