【Linux】シェルスクリプトでキーボード入力を受付ける方法

  • このエントリーをはてなブックマークに追加
  • Pocket
シェルスクリプトのキーボード入力の受付方

Linuxのシェルスクリプトでキーボードから入力を受け付ける必要があるときがある。

このページではその方法をサンプルのスクリプトともにご紹介した。参考にしてほしい。

キーボードから入力を受け付ける

キーボード入力を受け付けたいとき

スクリプトを記述しているときにふと「ユーザのキーボードから入力を受付けてほしい」というときがあると思う。

例えば、ステージ環境から本番環境に移すときに、どの部分を移すかをキーボードで選択するなどだ。

その場合「read」を使用するとそれが実現できる。基本的にUnix Like Systemではコマンドは対話的でないほうが自動化において有利にはたらくことが多いが、実際にオペレートしてみると、「ここだけは一度確認をとらなければ」というシーン、もしくは単純に対話的であってほしい、ということもあるだろう。

そういった場合に、繰り返しの前や処理の分岐前などにユーザに確認や入力をもとめることができる。bashの場合タイムアウトなどの設定も可能となっている。

なおreadはシェルに内蔵されている「組み込みコマンド」である。そのため/usr/bin/の下にコマンドがあるわけではないので注意しよう。

実際に使ってみよう

実際に試して見る。

サンプルコード

vi test-read.sh

出力結果

test read極限までシンプルにした例となったが、これで標準入力から入力を受取、変数へ代入することができるようになった。これから先変数を自由に扱い処理してゆくことになる。

まだ説明していない変数というものがあるが、今は「str」が変数という器で先頭に「$」がつくと参照できるという認識で問題ない。

複数の入力を受付ける

また複数の変数を同時に受け取ることも可能となっている。

サンプルコード

vi test-read-ver2.sh

出力結果

test read-ver2

その他とBash固有オプション

その他readはwhileと組み合わせて使用することが多い、このwhileは繰り返しの制御文でreadと組み合わせると一行ずつファイルの内容を読み込むことができる。

このとき「\」(バックスラッシュ)は特殊文字として扱われるため処理がうまくいかないときがある「\」を無視したい場合「-r」オプションを使用することで「\」も通常の文字列として処理される。

ほかにもBash固有のオプションとして幾つかオプションが存在している

  • -p プロンプトを表示する
  • -t タイムアウトを設定する。

-pオプション実例

「-p」オプションを指定することにより、事前にechoコマンドをはさむ必要がなくなる。

サンプルコード

vi test-read-ver3.sh

出力結果

test read-ver3

-tオプション実例

「-t」 オプションでタイムアウトを指定すると指定した時間だけ入力を受け付けてくれる。

サンプルコード

vi test-read-ver4.sh

出力結果

test-read-ver4

10秒間の間入力を受け付けてくれる、何も入力されなかった場合、そのままプロンプトが返ってくる。

とりあえず入力待ち

またreadはとりあえず処理をとめてEnter入力待ちをしたいときも有用である。

サンプルコード

vi test-read-ver5.sh

出力結果

read

まとめ

このページではシェルスクリプトでキーボードからの入力を扱う方法についてまとめてきた。

シェルスクリプトでは必ず使う機能だ。使って覚えてしまうのが吉だ。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*