<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Shell Script on MeerStory</title><link>https://linux.meerstory.com/ja/categories/shell-script/</link><description>Recent content in Shell Script on MeerStory</description><generator>Hugo</generator><language>ja-jp</language><lastBuildDate>Wed, 07 Oct 2026 14:34:22 +0900</lastBuildDate><atom:link href="https://linux.meerstory.com/ja/categories/shell-script/index.xml" rel="self" type="application/rss+xml"/><item><title>Linuxシェルスクリプト readコマンド完全ガイド - ユーザー入力からファイルを行ごとに読み込む実践テクニックまで</title><link>https://linux.meerstory.com/ja/ubuntu/20261007_143401_98/</link><pubDate>Wed, 07 Oct 2026 14:34:22 +0900</pubDate><guid>https://linux.meerstory.com/ja/ubuntu/20261007_143401_98/</guid><description>&lt;h2 id="概要">概要&lt;/h2>
&lt;p>Linux Bashシェルスクリプト作成時において、対話的なユーザー入力処理やテキストデータのパースに不可欠なreadコマンドの主要な活用法を解説します。基本的な入力処理からパスワードのマスキング（-s）、タイムアウト（-t）、区切り文字による分割（IFS）、そして実務で最も頻繁に使用されるwhileループを用いたファイルを行単位で処理する方法まで、網羅的に習得できます。&lt;/p>
&lt;h2 id="1-readコマンドの基本プロンプト-pおよびデフォルト値の設定">1. readコマンドの基本、プロンプト(-p)、およびデフォルト値の設定&lt;/h2>
&lt;p>&lt;code>read&lt;/code>コマンドの実習用ディレクトリを作成して移動するために、&lt;code>mkdir -p ~/read-demo &amp;amp;&amp;amp; cd ~/read-demo&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>コマンドは標準入力から1行を読み込んで変数に格納します。&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> : 指定した文字数のみ入力を受け付け、Enterキーを押さなくても即座に入力を終了します。&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>
&lt;h2 id="2-パスワードのマスキング-sおよび入力制限時間-tの処理">2. パスワードのマスキング(-s)および入力制限時間(-t)の処理&lt;/h2>
&lt;p>実習を継続するために、先ほど作成した&lt;code>~/read-demo&lt;/code>ディレクトリへ&lt;code>cd ~/read-demo&lt;/code>コマンドを実行して移動します。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_143401_98/captures/s02_c01_cd___read-demo.png" alt="cd ~/read-demo">&lt;/p>
&lt;p>&lt;code>-s&lt;/code>オプションで入力画面をマスキングし、&lt;code>-t 5&lt;/code>オプションで5秒の制限時間を設けた状態で入力を受け付けます。&lt;br>
パスワードが制限時間内に正常に渡され、終了ステータスコード（&lt;code>$?&lt;/code>）が&lt;code>0&lt;/code>として出力されました。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_143401_98/captures/s02_c02_bash_-c__read_-t_5_-sp__%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EB%A5%BC_%EC%9E%85%EB%A0%A5%ED%95%98%EC%84%B8%EC%9A%94__5%EC%B4%88_%EC%A0%9C%ED%95%9C_____use.png" alt="bash -c ‘read -t 5 -sp “비밀번호를 입력하세요 (5초 제한): &amp;#34; userpass; echo; echo “입력 완료 여부: $?” «&amp;lt; “secret1234”’">&lt;/p></description></item></channel></rss>