学而实习之 不亦乐乎

Linux 中使用 echo 命令输出变量值

2022-09-07 10:22:06

一、简介

echo 命令用于在 Shell 中打印 Shell 变量的值,或者直接输出指定的字符串。

命令格式:echo [选项] [参数]
选项说明

  • -n: 输出时,不在行尾添加换行符
  • -e: 使反斜杠的转义功能生效
  • -E: 禁用反斜杠的转义功能,为默认选项
  • --help: 显示帮助信息并退出
  • --version: 显示版本信息并退出

使用 -e 选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

  • \\:反斜杠;
  • \a:发出警告声;
  • \b:删除前一个字符;
  • \c:截断不输出\c后面的内容;
  • \e:escape,相当于 \033
  • \f:换行,但光标仍旧停留在原来的位置;
  • \n:换行且光标移至行首;
  • \r:光标移至行首,但不换行;
  • \t:插入tab;
  • \v:与\f相同;
  • \0NNN:插入NNN(八进制)所代表的ASCII字符;
  • \xHH:插入HH(十六进制)所代表的ASCII字符;

二、控制选项

可以使用 echo 打印带有颜色的字体,只需要在 Linux 终端下输出带颜色的文字只需在文字前面添加如下格式:

\033[显示方式;前景色;背景色m

其中\033是ESC健的八进制,\033[即告诉终端后面是设置颜色的参数,显示方式,前景色,背景色均是数字。数字含义如下:

显示方式    意义
0    终端默认设置
1    高亮显示
4    使用下划线
5    闪烁
7    反白显示
8    不可见

颜色数字代号如下:
前景色    背景色    颜色
30    40    黑色
31    41    红色
32    42    绿色
33    43    黃色
34    44    蓝色
35    45    紫红色
36    46    青蓝色
37    47    白色

其他选项:
\033[nA    光标上移n行
\033[nB    光标下移n行
\033[nC    光标右移n行
\033[nD    光标左移n行
\033[y;xH    设置光标位置
\033[2J    清屏
\033[K    清除从光标到行尾的内容
\033[s    保存光标位置
\033[u    恢复光标位置
\033[?25l    隐藏光标
\033[?25h    显示光标

实例如下:

【1】显示红色字体:
# echo -e "\e[1;31mThis is red text\e[0m" ``` 输出:This is red text
其中,\e[0m表示恢复终端默认设置。
【2】显示绿色背景字体:
# echo -e "\e[1;42mGreed Background\e[0m" Greed Background
【3】文字闪动。使用前景色31(红色),背景色42(绿色)闪动:
# echo -e "\033[5;31;42mMySQL Server Stop...\033[0m"

三、常用示例

1、不换行输出。
echo默认换行输出,使echo不换行输出有两种方法。

方法一:使用命令选项-n禁止输出换行符。

# echo -n what you want to output

方法二:使用命令选项 -e 让 echo 识别转义字符\c,echo 默认是不识别转义字符的。转义字符\c使用man echo查看echo的使用手册,其意思是produce no further output,表示截断不输出\c后面的内容。

# echo -e "lalalala\cend"
lalalala

2、显示转义字符

# echo "\"It is a test\""
"It is a test"

3、原样输出字符串,不进行转义或取变量(用单引号)

# echo '$name\"'
$name\"

4、显示命令执行结果

# echo `date`

注意:这里使用的是反引号 `, 而不是单引号 '。