【Shell脚本】Shell echo 命令

相当于python的print

命令格式:

复制代码
echo [选项] [字符串]

为什么需要 echo?

  • 信息反馈:向用户显示脚本执行状态或结果
  • 调试工具:输出变量值或执行位置,帮助调试脚本
  • 交互界面:创建简单的用户交互界面
  • 文件生成:快速生成配置文件或脚本

基本用法

shell 复制代码
#!/bin/bash

# 1、简单文本输出
echo "Hello, World!"

# 2、输出变量
name="sunny"
echo "Welcome, $name!"

# 3、不带引号的输出
# 引号不是必须的,但建议使用以避免意外:
echo hello world!

输出:

复制代码
Administrator@WIN-20220425YWW MINGW64 /e/一念之间/work/SR/min.tang/projects/shellProjects
$ ./test01.sh
Hello, World!
Welcome, sunny!
hello world!

常用选项

  • -n选项:不换行输出
  • -e选项:启动转义字符解释
shell 复制代码
#!/bin/bash

# 1、-n选项
echo -n "Hello, "
echo "World!!!"

# 2、-e选项
echo -e "First line\nSecond line"

输出:

复制代码
Administrator@WIN-20220425YWW MINGW64 /e/一念之间/work/SR/min.tang/projects/shellProjects
$ ./test01.sh
Hello, World!!!
First line
Second line

常用转义序列

转义序列 说明
\n 换行
\t 水平制表符
\v 垂直制表符
\b 退格
\r 回车
\\ 反斜杠字符本身

高级用法

输出到文件
shell 复制代码
#!/bin/bash

# 1、重定向输出到文件 >
echo "This will be saved to file" > output.txt

# 2、追加内容到文件  >>
echo "Additional line" >> output.txt

输出:

复制代码
Administrator@WIN-20220425YWW MINGW64 /e/一念之间/work/SR/min.tang/projects/shellProjects
$ ./test01.sh

Administrator@WIN-20220425YWW MINGW64 /e/一念之间/work/SR/min.tang/projects/shellProjects
彩色输出

使用 ANSI 转义码实现彩色文本:

shell 复制代码
#!/bin/bash

echo -e "\033[31mRed Text\033[0m"
echo -e "\033[42;31mGreen Background with Red Text\033[0m"

第一行:

  • echo: 用于输出文本到终端。
  • -e: 这个选项告诉 echo 解释转义字符。
  • \033: 这是 ASCII 的转义字符,表示开始一个颜色控制序列。
  • [31m: 这是 ANSI 码,用于设置文本的前景色(文本颜色)。31 指的是红色。
  • Red Text: 这是被设置颜色的实际文本内容。
  • \033[0m: 这段代码用于重置所有属性(包括颜色),确保后续的输出不会受到前一个文本设置的影响。

第二行echo -e "\033[42;31mGreen Background with Red Text\033[0m":

  • echo: 同样用于输出文本。
  • -e: 告诉 shell 解释后面的转义字符。
  • \033: 表示开始一个颜色控制序列。
  • [42;31m: 这里的 42 设置背景颜色为绿色,31 仍然是设置前景色为红色。多个属性可以用分号 ; 分开指定。
  • Green Background with Red Text: 被设置颜色的实际文本内容。
  • \033[0m: 用于重置颜色和其他属性。

输出:

颜色代码参考:

  • 前景色:30(黑)、31(红)、32(绿)、33(黄)、34(蓝)、35(紫)、36(青)、37(白)
  • 背景色:40-47 对应上述颜色
  • \033[0m 重置所有属性
输出命令执行结果
shell 复制代码
echo "Today is $(date)"

输出:

复制代码
$ ./test.sh
Today is Sat Jul  4 19:13:50     2026

实际应用示例

创建简单菜单
shell 复制代码
echo -e "\n\033[1mSystem Menu\033[0m"
echo "1. Check disk space"
echo "2. List running processes"
echo "3. Show system info"
echo -n "Please enter your choice [1-3]: "

echo -n中的-n表示不打印默认的回车,和python中的print('XXX',endle='')类似。

进度条模拟
shell 复制代码
#!/bin/bash

echo -n "Progress: ["
for i in {1..20}; do
    echo -n "#"
    sleep 0.1
done
echo "] Done!"

输出:

生成配置文件
shell 复制代码
#!/bin/bash

cat <<EOF | tee myapp.conf
# Generated by script on $(date)
[Database]
host = localhost
port = 3306
user = appuser
password = secret123
EOF

输出:

当前脚本根目录下会生成配置文件myapp.conf

注意事项

1、引号的重要性:

实例
shell 复制代码
var="Hello World"
echo $var   # 可能有问题,如果变量包含空格
echo "$var" # 正确方式

2、不同Shell的实现差异:

  • Bash 内置 echo 支持 -e 选项
  • 某些系统上的 /bin/echo 可能不支持所有选项
  • 可移植脚本建议使用 printf 替代复杂 echo

3、特殊字符处理:

实例
shell 复制代码
echo "Cost: \$100" # 输出 $ 符号
echo "Path: /usr/local/bin" # 斜杠不需要转义

总结要点

关键点 说明
基本语法 echo [选项] [字符串]
常用选项 -n 不换行,-e 启用转义
变量输出 使用 $变量名,建议用双引号包裹
彩色输出 使用 ANSI 转义码 \033[XXm
输出重定向 > 覆盖文件,>> 追加到文件
多行输出 使用 \n 换行或 Here Document
可移植性建议 复杂输出考虑使用 printf
相关推荐
Lsetea1 天前
OpenSSL s_client退出码为0却证书验证失败:严格校验与Shell管道排查
https·shell·ssl证书·openssl·tls
fox_charon3 天前
Windows 下 CLI 参数的引号陷阱:为什么 --resume 'uuid' 会失败
windows·shell·cmd·cli·引号
吴声子夜歌11 天前
Shell编程实例——编写安全的shell脚本(二)
linux·运维·shell
吴声子夜歌13 天前
Shell编程实例——内务及管理任务(一)
linux·运维·shell
吴声子夜歌13 天前
Shell编程实例——高级脚本编程(一)
linux·运维·网络·shell
吴声子夜歌13 天前
Shell编程实例——bash的配置与自定义(二)
linux·运维·shell
吴声子夜歌14 天前
Shell编程实例——与解析相关的任务(二)
linux·运维·shell
吴声子夜歌14 天前
Shell编程实例——脚本编程的附加特性
linux·运维·shell
云计算练习生14 天前
什么是内核?操作系统内核到底管哪些事
linux·windows·操作系统·内核·shell
吴声子夜歌17 天前
Shell编程实例——bash入门
linux·运维·shell