Bashが文字列で文字列置換を実行しようとしているのはなぜですか?

Bashが文字列で文字列置換を実行しようとしているのはなぜですか?

私のスクリプトはパイプから入力を受け取り、bashの文字列置換を使用して改行をカンマで置き換える必要があります。

#! /bin/bash

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

しかし、bashは改行文字を置き換えるのではなく、最初に一致するパターンを実行しようとします。

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

次の結果が出力されます。

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

そして変数は$input変更されません。二重引用符や一重引用符も役に立ちません。私はLinux Mintでbashバージョン4.3.11を使用しています。

答え1

$ループ内の割り当てラインから削除します。その値を割り当てる変数の名前として使用しようとしましたが、その結果非常に奇妙な動作が発生します。

関連情報