Linux 变量中带有sed的Shell子字符串
我在bash-linux中尝试过这个命令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/^
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