尝试回显字符串会将多个空格发送到终端,但需要按原样使用一个字符串

尝试回显字符串会将多个空格发送到终端,但需要按原样使用一个字符串

尝试执行以下操作:

echo "- - 830 "FTL  MFG" -"

应将其"FTL MFG"作为一项单独保留。

我究竟做错了什么?

答案1

echo "- - 830 "FTL  MFG" -"
     ^^^^^^^^^^        ^^^^ quoted
               ^^^^^^^^ not quoted

echo看到两个参数:- - 830 FTLMFG -,并打印它们,中间有一个空格。如果您想要带引号的输出,则需要对它们进行转义,或使用单引号将字符串括起来:

echo "- - 830 \"FTL  MFG\" -"
echo '- - 830 "FTL  MFG" -'

答案2

双引号"是字符串分隔符(字符串在 shell 中的工作方式与在大多数编程语言中的工作方式不同)。比较:

$ for a in "- - "830 FTL MFG" -"; do echo "$a"; done
- - 830
FTL
MFG -

您需要转义双引号(以便将它们解释为文字双引号)或用'它来分隔字符串。

%  echo "- - 830 \"FTL MFG\" -"
- - 830 "FTL MFG" -
% echo '- - 830 "FTL MFG" -'
- - 830 "FTL MFG" -

相关内容