我正在尝试将echo值分配给一个变量,但是出现了错误。
Var='(echo $2 | sed -e 's/,/: chararray /g'| sed -e 's/$/: chararray/')'
echo $var
Input : sh load.sh file 1,2,3,4
Error load.sh: line 1: chararray: command not found
Var=$(echo "$2" | sed -e 's/,/: chararray /g' | sed -e 's/$/: chararray/')
echo "$Var"
或者
Var=`echo "$2" | sed -e 's/,/: chararray /g' | sed -e 's/$/: chararray/'`
echo "$Var"
请使用$(...)
或者反引号`…`
表示法。但是,反引号表示法已经被弃用,应该避免使用。此外,请查看mmgross、Etan Reisner和svlasov的评论。他们都是正确的。
$()
来运行命令,并且在赋值语句的右边不需要用引号。 - Etan Reisnersed -e 's/,\|$/: chararray /g'
,也就是用替换文本替换所有逗号或字符串结尾。 - glenn jackmansed
命令中需要两个单独的-e 's/…/…/'
表达式,(2)正则表达式中的|
符号只有在sed
支持时才有效,并且可能需要告知sed
允许它(使用-E
或-r
选项);并非所有版本的sed
都支持扩展正则表达式。 - Jonathan Leffler