如何在Shell中将echo值赋给变量

8

我正在尝试将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

2
你的引号搞错了。 - mmgross
1
你不能嵌套引号,也不能在单引号内转义单引号。此外,你需要使用 $() 来运行命令,并且在赋值语句的右边不需要用引号。 - Etan Reisner
1
另外,Shell 变量是区分大小写的。 - svlasov
你可以将两个sed命令简化为一个:sed -e 's/,\|$/: chararray /g',也就是用替换文本替换所有逗号或字符串结尾。 - glenn jackman
@glennjackman:(1)替换字符串不同,因此在一个sed命令中需要两个单独的-e 's/…/…/'表达式,(2)正则表达式中的|符号只有在sed支持时才有效,并且可能需要告知sed允许它(使用-E-r选项);并非所有版本的sed都支持扩展正则表达式。 - Jonathan Leffler
1个回答

11
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"

请使用$(...)或者反引号`…`表示法。但是,反引号表示法已经被弃用,应该避免使用。此外,请查看mmgrossEtan Reisnersvlasov的评论。他们都是正确的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接