<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Shell 脚本 on MeerStory</title><link>https://linux.meerstory.com/zh/categories/shell-%E8%84%9A%E6%9C%AC/</link><description>Recent content in Shell 脚本 on MeerStory</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 07 Oct 2026 14:34:22 +0900</lastBuildDate><atom:link href="https://linux.meerstory.com/zh/categories/shell-%E8%84%9A%E6%9C%AC/index.xml" rel="self" type="application/rss+xml"/><item><title>Linux Shell 脚本 read 命令完全指南 - 从用户输入到逐行读取文件的实战技巧</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_143401_98/</link><pubDate>Wed, 07 Oct 2026 14:34:22 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_143401_98/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本文介绍了在编写 Linux Bash Shell 脚本时，用于处理交互式用户输入和解析文本数据必不可少的 read 命令核心用法。内容涵盖从基础输入处理、密码隐藏(-s)、超时控制(-t)、分隔符切分(IFS)，到实际工作中最为常用的基于 while 循环的文件逐行读取技术。&lt;/p>
&lt;h2 id="1-read-命令基础提示符-p及默认值设置">1. read 命令基础、提示符(-p)及默认值设置&lt;/h2>
&lt;p>运行 &lt;code>mkdir -p ~/read-demo &amp;amp;&amp;amp; cd ~/read-demo&lt;/code> 命令，创建用于 &lt;code>read&lt;/code> 命令实践的专属目录并切换进入。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_143401_98/captures/s01_c01_mkdir_-p___read-demo____cd___read-demo.png" alt="mkdir -p ~/read-demo &amp;amp;&amp;amp; cd ~/read-demo">&lt;/p>
&lt;p>&lt;code>read&lt;/code> 命令从标准输入读取一行并存入变量中，可以使用 &lt;code>-p&lt;/code> 选项输出提示信息，并通过 &lt;code>${变量名:-默认值}&lt;/code> 语法在变量为空时代入默认值。&lt;br>
在执行结果中，由于未直接向 &lt;code>read&lt;/code> 命令传递输入，&lt;code>username&lt;/code> 变量保持为空，因此根据 &lt;code>${username:-guest}&lt;/code> 语法输出了默认值 &lt;code>guest&lt;/code>。&lt;br>
⚙️ [主要选项]&lt;/p>
&lt;p>&lt;code>-p&lt;/code> : 指定在接收输入前显示在屏幕上的提示字符串。&lt;br>
&lt;code>-s&lt;/code> : 启用密码等敏感信息输入时的静默模式，不在屏幕上回显输入字符。&lt;br>
&lt;code>-t&lt;/code> : 设置输入等待超时时间（秒），超过指定时间则终止输入。&lt;br>
&lt;code>-n&lt;/code> : 仅读取指定数量的字符，无需按回车键即可立即结束输入。&lt;br>
&lt;code>-r&lt;/code> : 不将反斜杠（&lt;code>\&lt;/code>）解析为转义字符，原样读取原始内容。&lt;br>
&lt;code>-a&lt;/code> : 将输入的词按空格分割并按顺序存储到数组变量中。&lt;br>
&lt;code>-d&lt;/code> : 自定义用于结束输入的定界符（delimiter），以替代默认的换行符。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_143401_98/captures/s01_c02_bash_-c__read_-p__%EC%82%AC%EC%9A%A9%EC%9E%90_%EC%9D%B4%EB%A6%84%EC%9D%84_%EC%9E%85%EB%A0%A5%ED%95%98%EC%84%B8%EC%9A%94____username__echo.png" alt="bash -c ‘read -p “사용자 이름을 입력하세요: &amp;#34; username; echo “입력된 사용자: ${username:-guest}” «&amp;lt; “tester”’">&lt;/p></description></item></channel></rss>