【Shell脚本】Shell echo 命令

相当于pythonprint

命令格式:

复制代码
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
相关推荐
wok1577 小时前
Claude Code 的 Shell 工具因中文参数导致 Exit Code 127,求解决方案
shell·claude
vortex511 小时前
Shell 命令执行知识体系全景解析
linux·运维·bash·shell·命令行
vortex511 小时前
Shell 位置参数传递:从入门到“怀疑人生“
linux·bash·shell
zzzzzz31019 天前
NVIDIA 开源 SkillSpector:AI Agent 技能安全扫描器,你的 Agent 装了个定时炸弹?
机器学习·shell·cto
ScilogyHunter21 天前
Zephyr Shell完全指南
shell·zephyr
七夜zippoe21 天前
OpenClaw 节点命令执行:远程Shell与系统操作实战
github·shell·openclaw·nodes·系统操作
Mr -老鬼24 天前
EasyClick 入门指南:Shell 命令与 ADB 完全指南
android·adb·自动化·shell·easyclick·易点云测
tianyuanwo1 个月前
Shell 脚本中的“字典”功能:从基础到工程化的最佳实践
shell·字典
爱睡觉1111 个月前
在 Android 模拟器 Shell 下运行 ncnn 推理的性能排查记录
linux·shell