シェルスクリプトでforeachの様に配列を繰り返し処理する方法
目次
スポンサードリンク
foreachコマンドは、配列データに特化した繰り返し処理を簡単に実行できるメソッドです。
シェルスクリプトでは、利用するシェルの種類によってforeachコマンドが使えるものと使えないものがあります。csh(C Shell)やtcsh(Tenex C Shell)では、foreachコマンドを使用することができますが、bashではforeachコマンドは利用できません。
foreachコマンドの基本構文
cshやtcshでは以下のようにforeachコマンドを実行することができます。
foreach 変数 (配列)
コマンド
end
以下のサンプルコードではhttpdのログファイルを配列で取得して一つずつ標準出力に出しています。1行目のシバンもcshを表す「#!/bin/csh」になっています。
#!/bin/csh
foreach var (`ls -l /var/log/httpd/ | awk '{print $9}'`)
echo $var
end
exit 0
bashでのループ処理
bashでは上記foreachコマンドは使用できません。bashではfor文を使って配列データを繰り返し処理します。
#!/bin/bash
file_names=(`ls -l /var/log/httpd/ | awk '{print $9}'`)
for filename in ${file_names[@]}
do
echo $filename
done
exit 0
シェルスクリプトの知識は、プログラマにとって長く役立つ知識です。 私はこちらの書籍で一通り知識を抑えました。基本から丁寧に解説されています。
リンク
最短3時間で覚えるLinuxシェルスクリプト
こちらは、シェルスクリプトの基本的な書き方、デバッグ方法、if, case, while, forなど基本的な制御構文について書かれています。30日間の無料体験もできる『Kindle Unlimited』でも読むことができます。
リンク
Linuxコマンドについて徹底的に学べるUdemy講座
もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】
関連記事
Search
Recent Posts
- OpenSSHのエラー「bad ownership or modes for chroot directory component」の原因と解消方法
- Apacheの起動状態をチェックして停止してる場合にApacheを起動するシェルスクリプト
- Amazon LinuxのOSバージョンを調べる方法|/etc/redhat-release の代替ファイル
- MYSQLでダンプファイルを取得する際に発生したエラー「Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)」の原因と対処方法
- RHEL系Linuxでリポジトリを一覧表示するコマンド(dnf repolist)