Mat*_*ock 26 shell bash variable-substitution
我有一个颜色变量。我用它来为字符串设置颜色,方法是在字符串内部对其进行评估。但是,我需要在名称后包含空格(以便名称不包含部分文本)。这有时看起来很糟糕。
我怎样才能避免使用(打印)这个空间?
示例(让我们说Red=1和NC=2):
echo -e "$Red Note: blabla$NC".
Run Code Online (Sandbox Code Playgroud)
输出:
1 Note: blabla2.
Run Code Online (Sandbox Code Playgroud)
预期输出:
1Note: blabla2.
Run Code Online (Sandbox Code Playgroud)
cuo*_*glm 40
只需将变量括在大括号中:
echo -e "${Red}Note: blabla${NC}".
Run Code Online (Sandbox Code Playgroud)
查看有关参数扩展的更多详细信息。
另见很好的答案为什么 printf 比 echo 好?如果你关心便携性。
小智 7
你应该养成使用 printf 的习惯:
printf '%sNote: blabla%s\n' "$Red" "$NC"
Run Code Online (Sandbox Code Playgroud)
其中每个%s替换一个变量。并且-e不需要,因为 printf 以可移植的方式接受反斜杠值 \n、\t 等。
请记住,echo -e它不可移植到其他 shell。
您可以使用两个命令来连接它们的输出:
echo -ne "$Red"; echo -e "Note: blabla$NC"
Run Code Online (Sandbox Code Playgroud)
您可以使用简单的字符串连接:
echo -e "$Red""Note: blabla$NC"
Run Code Online (Sandbox Code Playgroud)
或者您可以使用{ }以避免名称文本混淆:
echo -e "${Red}Note: blabla$NC"
Run Code Online (Sandbox Code Playgroud)