Por que o bash tenta executar strings em uma substituição de string?

1

Meu script deve receber entrada de um pipe e substituir caracteres de nova linha por vírgulas, usando a substituição de string do bash:

#! /bin/bash

read -d -r input 
echo $input 
$input=${input//\n/,}
echo $input

No entanto, em vez de substituir o caractere de nova linha, o bash tenta executar o primeiro padrão correspondente:

echo -e "this\nis\na\ntest\n" | test.sh 

fornecerá a seguinte saída:

test.sh: line 5: this: command not found 

e a variável $input não é alterada. Aspas duplas ou simples também não ajudaram. Estou usando o bash versão 4.3.11 no Linux Mint.

    
por Suzana 27.05.2015 / 20:42

1 resposta

2

Remova o $ da linha de atribuição dentro do loop. Você está tentando usar o valor como o nome da variável que está atribuindo, o que está causando um comportamento muito estranho.

    
por 27.05.2015 / 20:47