Sed Falha ao armazenar o resultado em uma variável

0

Eu tento colocar o valor do resultado deste comando:

sed "s/\$ip/${ip}/g" xdebug.conf

Fornecido a partir deste arquivo xdebug.conf :

zend_extension = xdebug.so
xdebug.remote_enable = 1
xdebug.remote_host = $ip
xdebug.remote_port = 9091
xdebug.max_nesting_level = 1000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
xdebug.remote_log=xdebug.log

Em uma variável chamada $conmfiguration .

Para conseguir isso, tento:

ip="125.12.22.1"
$configuration=$(sed "s/\$ip/${ip}/g" xdebug.conf)

Mas recebo o seguinte resultado estranho:

=zend_extension: command not found

Você sabe por que isso acontece?

    
por Dimitrios Desyllas 28.09.2018 / 23:25

1 resposta

2

Aqui,

$configuration=$(sed "s/\$ip/${ip}/g" xdebug.conf)

$configuration e $(sed ...) são expandidos. Se a variável estiver vazia, você obtém

=zend_extension = xdebug.so ...

A primeira palavra é tomada como um comando e o restante como argumentos para ela. O shell tenta encontrar =zend_extension , falha e reclama.

Remova o $ do lado esquerdo da tarefa e a atribuição funciona. Isso gera foo bar :

var=$(echo foo bar)
echo $var
    
por 29.09.2018 / 00:14