シェルスクリプト echo・readコマンド
シェルスクリプト
Ubuntuで作業ディレクトリを作成してカレントディレクトリにしたらソースコードのファイルを作成
touch ファイル名.sh
作成したファイルをVSCodeで開いて編集
#! ... シバン シェルスクリプトをどのシェルで実行するか指定するため1番最初に記述。
#!/bin/bash
今回はbashシェルを指定
シェルスクリプトを実行する
./ファイル名
./ を含めた相対パスで実行。 ./ を含めずに実行できるのは、どのディレクトリにいる時にも共通して使えるよう設定した特定のディレクトリ内にあるファイルのみ。
コマンドとなる実行ファイルが置いてあるディレクトリをパスが通ったディレクトリと呼ぶ。
echoコマンド
第一引数で与えられた文字列をそのまま標準出力に出力する。
変数を表示 $ 変数名
計算値 `バッククォート で計算式囲む 足し算+ 引き算- 割り算/ 掛け算\ (はワイルドカードという意味を持つためバックスラッシュをつける)
オプション | 説明 |
---|---|
-n | 最後の改行をしない |
-e | エスケープシーケンスを解釈 |
-E | エスケープシーケンスを解釈しない |
-e オプションでエスケープシーケンスを有効にできる |エスケープシーケンス|説明| | :---: | :---: | |\a|アラート文字| |\b|バックスペース文字| |\c|以降の出力を抑止| |\e|エスケープ| |\f|フォームフィード文字| |\r|キャリッジリターン| |\n|改行| |\t|水平タブ| |\v|垂直タブ|
引用符("または')の中では \n 引用符がない場合は \\n と \ を一つ増やす
' ... シングルクォートの中は全て文字列と解釈
" ... ダブルクォートは変数の内容を表示
` ... バッククォートはコマンドと解釈し実行結果や変数内容などを表示
readコマンド
read 変数
- キーボード入力された値が代入される
- 引数に複数の変数を指定した場合、入力した行は単語毎に区切られ変数に代入される。(区切り文字は環境変数IFSで決められる)
- 入力した単語が変数より多い場合は、最後の変数に残りの行がすべて代入される。
例
read var1 var2 echo $var1 echo $var2
キー入力
a b c
シェルスクリプトの実行結果
a b c
readコマンドで変数が何も指定されない場合は入力した行は変数REPLYに代入される。
-a オプション (配列変数)
-aオプションの後に変数を指定 ... 配列変数となり入力した行を単語毎に区切り配列変数に代入する。配列変数は0から順に代入される。
read -a var const echo ${var[0]} echo $const
入力
a b c
結果
a //-aオプションを用いた場合、readコマンドで指定する他の変数は無視される。
-d オプション (入力を終了する文字を指定)
read -d';' -a var echo ${var[0]} echo ${var[1]}
a b c;
a b
-e オプション (入力で補完などの機能を使用)
-i オプション (入力時に事前に入力される)
例 ディレクトリにmy-fileがあると仮定
read -i'my' -e var
入力時
my
と既に入力されている。この時にTabキーを押すと
my-file
と入力を補完する。
-n オプション (入力文字数を制限)
例
read -n 3 var
入力時に指定した文字数(上記では3文字)を入力した時点で終了する。Enterでいつでも終了できる
-N オプション (文字数を指定)
read -N 5 var
-nオプションと同じだが指定した文字数(上記では5文字)を入力するまで終了しない。Enterを押すと空白文字となり文字数1カウントになる
-p オプション (入力時に指定のプロンプトを表示)
例
read -p '>' var
入力時に指定したプロンプトが表示される
>
-r オプション (エスケープ文字を無効)
\ をエスケープ文字として扱わない。
-s オプション (サイレントモード)
入力時に入力文字を表示しない。
-t オプション (入力時間の制限)
時間は秒単位で指定