linux – 为什么这个用于着色文本的bash函数只打印整个字符串的第一个单词?教程
我正在尝试创建将以某种颜色打印绑定到变量的消息的函数.消息变量作为此函数的参数传递.问题是我只获得第一个空格的文本(只有第一个消息).我的脚本看起来像这样:
#!/usr/bash
lbGREEN='\e[1;92m'
NC='\e[0m'
normalMessage="Everything fine"
echo_message() {
echo -e ${lbGREEN}$1${NC}
}
echo_message $normalMessage
我的输出是:
Everything
解决方法:
对我来说,我不得不更改“#!/ bin / bash”的标题,但显然这对你来说不是问题.
在你的回声中你只用$1打印第一个单词,如果你把它改成$2你将打印第二个单词(参数),依此类推.
您可以在引号内传递名称或使用$@打印所有参数
解决方案1(使用$@):
lbGREEN='\e[1;92m'
NC='\e[0m'
normalMessage="Everything fine"
echo_message() {
echo -e ${lbGREEN}$@${NC}
}
echo_message $normalMessage
解决方案2(带引号):
lbGREEN='\e[1;92m'
NC='\e[0m'
normalMessage="Everything fine"
echo_message() {
echo -e ${lbGREEN}$1${NC}
}
echo_message "$normalMessage"