输入输出是 Shell 脚本和外界交互的桥梁。脚本需要接收用户的输入、读取文件内容、输出处理结果、记录日志信息,这些都离不开输入输出操作。
Linux 系统为每个进程提供了三个标准流:
标准输入(stdin):编号 0,默认连接键盘。程序从这里读取输入数据。
标准输出(stdout):编号 1,默认连接终端屏幕。程序把正常结果输出到这里。
标准错误(stderr):编号 2,默认也连接终端屏幕。程序把错误信息输出到这里。
这三个流构成了程序和外界通信的基础通道。理解它们的工作方式,是掌握 Shell 输入输出的关键。
Shell 提供了两种主要的输出命令:
echo:简单直接,适合大多数场景。能输出字符串、变量值,支持一些基本的转义字符。
printf:功能强大,支持格式化输出。可以精确控制输出格式,适合生成报表、对齐数据等场景。
两者各有适用场景,echo 用起来更方便,printf 更灵活。
读取输入主要有两种方式:
read 命令:从标准输入读取用户输入,支持提示信息、超时设置、密码输入等功能。
命令替换:通过 $() 或反引号捕获命令的输出,作为脚本的输入数据。
重定向和管道是 Shell 的两大法宝:
重定向:改变数据流的走向。可以把输出保存到文件、把文件内容作为输入、把错误信息单独处理。
管道:把一个命令的输出直接传给另一个命令作为输入。多个命令可以串联起来,形成数据处理流水线。
这一章我们详细学习:
掌握输入输出操作,就能让脚本和用户、文件、其他程序自由交互,这是写实用脚本的基本功。