Linux 变量中带有sed的Shell子字符串

Linux 变量中带有sed的Shell子字符串,linux,bash,sed,substring,Linux,Bash,Sed,Substring,我在bash-linux中尝试过这个命令 echo "example=value" | sed "s/^example=\(.*\)$/\1/" 输出为值。但如果我把它放在一个变量中,它就不起作用了 例如: var="example=value" | sed "s/^example=\(.*\)$/\1/" echo $var 输出为零。怎么了?分配变量不会通过管道将值传递给sed 您可以通过以下方式进行分配: var=“example=value”和&echo“$var”| sed”s/^

我在bash-linux中尝试过这个命令

echo "example=value" | sed "s/^example=\(.*\)$/\1/"
输出为
。但如果我把它放在一个变量中,它就不起作用了

例如:

var="example=value" | sed "s/^example=\(.*\)$/\1/"
echo $var

输出为零。怎么了?

分配变量不会通过管道将值传递给
sed

您可以通过以下方式进行分配:

var=“example=value”和&echo“$var”| sed”s/^example=\(.*\)$/\1/”

或者使用如下子壳:

var=$(echo“example=value”| sed“s/^example=\(.*)$/\1/”

这样做:

var=$(echo example=value | sed "s/^example=\(.*\)$/\1/")
echo $var

您可以在不使用sed的情况下使用以下工具执行此操作:


var=$(echo“example=value”| sed“s/^example=\(.*\)$/\1/”
我会收紧你的sed,并使用强引号:
var=$(echo“example=value”| sed“s/^.*=\(.\)/\1/)
在尝试编写更多的Shell脚本之前,请阅读Chris Johnson的《Shell脚本编写方法》一书,因为您缺少一些关键的基础知识,并且没有学习这些基础知识,您即将开始编写非常脆弱的Shell脚本。另外,
$()
告诉bash将值作为正确的操作数返回到=。
$ var="example=value"
$ var="${var#*=}"
$ echo "$var"
value