我有一个颜色变量。我用它通过在字符串内部评估它来设置字符串的颜色。但是,我需要在名称后面包含空格(以便名称不包含部分文本)。这有时看起来很糟糕。
我怎样才能避免使用(打印)这个空间?
示例(比方说Red=1
和NC=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"