Bash脚本将管道sed的输出保存为变量

Bash脚本将管道sed的输出保存为变量,bash,Bash,为什么这样不行 newAns=$(${answer} | sed 's/\[//') 我正试图编辑$answer变量以去掉“[”并将其保存到新变量中 当前给我一个错误,说“[foo]:找不到命令” $answer=[foo] echo$newAns=foo]$(…)运行命令 ${answer}|sed是一个管道,它运行命令${answer},并将其输出导入sed sed是有效的命令,但您的$answer不是(它只是一个字符串) 最简单的解决方案是根本不使用管道或外部命令: newAns="$

为什么这样不行

 newAns=$(${answer} | sed 's/\[//')
我正试图编辑$answer变量以去掉“[”并将其保存到新变量中

当前给我一个错误,说“[foo]:找不到命令”

$answer=[foo] echo$newAns=foo]

$(…)
运行命令

${answer}|sed
是一个管道,它运行命令
${answer}
,并将其输出导入
sed

sed
是有效的命令,但您的
$answer
不是(它只是一个字符串)

最简单的解决方案是根本不使用管道或外部命令:

newAns="${answer#\[}"
将删除前导的
[

$(…)
运行命令

${answer}|sed
是一个管道,它运行命令
${answer}
,并将其输出导入
sed

sed
是有效的命令,但您的
$answer
不是(它只是一个字符串)

最简单的解决方案是根本不使用管道或外部命令:

newAns="${answer#\[}"

将删除一个前导的
[

您可能是指
echo$answer
?希望不是--没有引号,如
echo“$answer”
,它会运行冲突。这也应该起作用:
newAns=$(echo“$answer”\124; sed's/\[/')
,然后
echo“$newAns将给出输出:
foo]
。你可能是指
echo$answer
?希望不是——没有引号,就像在
echo“$answer”
中一样,它与之相冲突。这也应该是可行的:
newAns=$(echo“$answer”| sed's/\[/')
,然后
echo“$newAns”
将给出输出:
foo]