为什么 sed 命令输出“char 5:未终止的`s'命令”

Tha*_*uân 2 command-line bash scripts sed

我运行了如下命令来调试我的脚本,但它不起作用。

$ L="Thanh,Fri 11 Nov, Mon 14 Nov,LX,VN" 
$ B="Fri 11 Nov, Mon 14 Nov"
$ N="11.11-14.11"
$ sed 's/'$B'/'$N'/' <<< $L
sed: -e expression #1, char 5: unterminated `s' command
Run Code Online (Sandbox Code Playgroud)

请你帮助我好吗?

ste*_*ver 6

这是因为 - 扩展中存在未加引号的空格,您可以在 shell 中$B使用来验证:set -x

$ set -x
$ sed 's/'$B'/'$N'/' <<< $L
+ sed s/Fri 11 Nov, Mon 14 Nov/11.11-14.11/
sed: -e expression #1, char 5: unterminated `s' command
$ set +x
Run Code Online (Sandbox Code Playgroud)

(注意 sed 如何接收单独的参数s/Fri 11 Nov,等)。

您可以使用

sed 's/'"$B"'/'"$N"'/' <<< "$L"
Run Code Online (Sandbox Code Playgroud)

或者更简单地说

sed "s/$B/$N/" <<< "$L"
Run Code Online (Sandbox Code Playgroud)

前任。

$ set -x
$ sed "s/$B/$N/" <<< "$L"
+ sed 's/Fri 11 Nov, Mon 14 Nov/11.11-14.11/'
Thanh,11.11-14.11,LX,VN
$ set +x
Run Code Online (Sandbox Code Playgroud)