为什么 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

$从循环内的赋值行中删除。您尝试使用该值作为要分配给的变量的名称,这会导致非常奇怪的行为。

相关内容