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"
推荐阅读
- google-cloud-platform - 在 GCP 集群上运行 Dask 脚本
- javascript - React 事件处理程序:尝试使用默认值更新购物车数量“onChange”
- apache-spark - Pyspark 更新特征向量中的值
- git - 尝试使用 LFS 将 Unity 文件上传到 git 失败并出现“检测到 GH001 大文件”错误
- angular - nrwl - ng generate 给出超出最大调用堆栈大小
- macos - 用ffmpeg展平两个音轨
- c++ - FFmpeg 在使用奇异分辨率时创建无效输出
- html - 移动项目文件夹后导航栏 CSS 不起作用
- mysql - 对选定行的值求和