如何避免字符串中bash变量后面有空格?

如何避免字符串中bash变量后面有空格?

我有一个颜色变量。我用它通过在字符串内部评估它来设置字符串的颜色。但是,我需要在名称后面包含空格(以便名称不包含部分文本)。这有时看起来很糟糕。

我怎样才能避免使用(打印)这个空间?

示例(比方说Red=1NC=2):

echo -e "$Red Note: blabla$NC".

输出:

1 Note: blabla2.

预期输出:

1Note: blabla2.

答案1

只需将变量括在大括号中即可:

echo -e "${Red}Note: blabla${NC}".

查看更多详细信息参数扩展

另请参阅很好的答案为什么 printf 比 echo 更好?如果您关心便携性。

答案2

你应该养成使用 printf 的习惯:

printf '%sNote: blabla%s\n' "$Red" "$NC"

其中每个%s替换一个变量。并且-e不需要因为 printf 以可移植的方式接受反斜杠值 \n、\t 等。

请记住,它echo -e不能移植到其他 shell。

其他选项:

您可以使用两个命令来连接它们的输出:

echo -ne "$Red"; echo -e "Note: blabla$NC"

您可以使用简单的字符串连接:

echo -e "$Red""Note: blabla$NC"

或者您可以使用{ }以避免名称-文本混淆:

echo -e "${Red}Note: blabla$NC"

相关内容