Novas linhas no texto de múltiplas linhas do EOF produzem erros no comando sed usando o shell Unix [duplicado]

0
    

Esta pergunta já tem uma resposta aqui:

    

Aqui meu arquivo run.sh:

#!/bin/sh

before=$(cat <<EOF
require SYSPATH.'core/Bootstrap'.EXT;
EOF
)

after=$(cat <<EOF
if(strpos($_SERVER['SCRIPT_NAME'], 'phpunit'){
sometext # <= without it works fine!
EOF
)

sed -i.bak "s|$before|$after|g" "$2"

erro

sed: -e expressão # 1, char 79: comando 's' não terminado

Funciona bem, mas eu quero substituir o texto de múltiplas linhas!

#!/bin/sh

before=$(cat <<EOF
require SYSPATH.'core/Bootstrap'.EXT;
EOF
)

after=$(cat <<EOF
if(strpos($_SERVER['SCRIPT_NAME'], 'phpunit'){
EOF
)

sed -i.bak "s|$before|$after|g" "$2"
    
por Nychos 09.02.2017 / 16:07

1 resposta

0

Isso corrigiu:

if(strpos($_SERVER['SCRIPT_NAME'], 'phpunit'){ \n \ # <= BACKSLASH needed!
sometext
    
por 09.02.2017 / 16:17

Tags