シェルスクリプト

HOME > シェルスクリプト

シェルスクリプト:記事リスト

シェルスクリプトのカテゴリーには以下の記事がリストされています。

bashの配列(Array)の使い方|宣言・追加・ループ・連想配列の実践例

「シェルスクリプトで複数のサーバー名や設定値をまとめて扱いたいのに、毎回変数を個別に定義するのが面倒だ」
そんな悩みを抱えながら、変数1個ずつを地道に書き続けていませんか。

この記事では、bashの配列(Array)の宣言・要素の追加・ループ処理・連想配列(Associative Array)まで、実務で使える形で一通り解説します。
RHEL 9.4 / Ubuntu 24.04 LTS のbash 5系で動作確認済みの手順です。配列をマスターすると、複数ホストへの一括処理やバックアップスクリプトの記述がぐっとシンプルになります。

この記事のポイント

・bash配列は `arr=(a b c)` で宣言し、`${arr[0]}` でインデックス参照できる
・`${arr[@]}` で全要素展開、`${#arr[@]}` で要素数の取得が可能
・連想配列は `declare -A` で宣言し、キーと値のペアで管理できる
・for文との組み合わせでサーバー一括処理・ファイル操作の自動化に直結する

続きを読む "bashの配列(Array)の使い方|宣言・追加・ループ・連想配列の実践例"

bashのヒアドキュメント(here document)の使い方|設定ファイル生成・コマンド入力・インデントの実践例

「設定ファイルをcatで上書きしたいけど、複数行の文字列をどう扱えばいいんだろう」
「スクリプトの中でコマンドに複数行の入力を渡したい」

こうした場面で使うのがbashのヒアドキュメント(here document)です。
echo を何十行も並べる必要はありません。<< 演算子を使えば、複数行のテキストをそのまま扱えます。

この記事では、ヒアドキュメントの基本構文から、設定ファイルの生成・シェルスクリプト内でのコマンド入力・インデント制御まで、現場で即使える実践的な使い方を解説します。RHEL 9.4 / Ubuntu 24.04 LTS で動作確認済みです。

この記事のポイント

<<EOF で複数行テキストをそのままコマンドに渡せる
<<'EOF'(シングルクォート)で変数展開を抑止できる
<<-EOF でインデントのタブを自動除去できる
・設定ファイル生成・mysql入力・ssh越し実行の3パターンが定番

続きを読む "bashのヒアドキュメント(here document)の使い方|設定ファイル生成・コマンド入力・インデントの実践例"

gitコマンドの使い方入門|init・clone・commit・pushの基本とLinuxサーバーでの実践例

「gitって名前は知っているけど、コマンドの使い方がよくわからない」
「git commit や git push の違いが頭の中でごっちゃになっている」

Linuxサーバーを扱う現場では、設定ファイルやスクリプトのバージョン管理にgitを使うケースが当たり前になっています。コンテナ・IaCツール(Ansible、Terraform)との連携でも、gitの操作は避けて通れません。

この記事では、Linuxサーバー上でgitコマンドを初めて使う方に向けて、インストールと初期設定からcommit・push・branchの基本操作、よくあるエラーの対処法まで体系的に解説します。RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・git init でローカルリポジトリを作成し、git add → git commit の流れで変更を記録する
・git clone でリモートリポジトリをサーバーへ取得し、git push で変更を反映する
・ブランチを使うことで本番環境への影響なく設定変更をテストできる
・.gitconfigの初期設定(user.name・user.email・core.editor)は最初に済ませる

続きを読む "gitコマンドの使い方入門|init・clone・commit・pushの基本とLinuxサーバーでの実践例"

bashのfor文・while文・until文の使い方|ループ処理の基本から実践例まで

「シェルスクリプトでファイルを一括処理したいが、ループの書き方がよくわからない」
「for文とwhile文の使い分けが曖昧なまま、なんとなくコピペして使っている」

こう感じたことがある方は多いはずです。ループ処理はシェルスクリプトの核心部分であり、ここを押さえるだけで自動化できる作業の幅が一気に広がります。

この記事では、bashのfor文・while文・until文の書き方を基礎から解説します。単純な繰り返しから、ファイル一括処理・カウンタループ・break/continueによる制御まで、現場で実際に使えるパターンを中心に紹介します。

この記事のポイント

・for文はリストの各要素を順番に処理する基本ループ
・while文は「条件が真の間」繰り返す。ファイルの行読み込みに最適
・until文は「条件が偽の間」繰り返す。ポーリング処理に便利
・break/continueで途中スキップ・終了ができる

続きを読む "bashのfor文・while文・until文の使い方|ループ処理の基本から実践例まで"

bashのif文とtest条件式の使い方|ファイル・文字列・数値の比較から実践例まで

「シェルスクリプトでif文を書いたら、思ったように動かない」
「test条件式の書き方がいくつかあって、どれを使えばいいのか分からない」

bashのif文はシェルスクリプトの中で最も使用頻度が高い構文のひとつです。ファイルの存在確認、文字列の比較、数値の大小判定など、スクリプトの自動化ロジックはほぼすべてif文で成り立っています。ところが、testコマンドや[ ]、[[ ]]など複数の書き方があり、初めて学ぶ人が混乱しやすいポイントでもあります。

この記事では、bashのif文とtest条件式の基本から、ファイル操作・文字列・数値・コマンドの終了ステータスを使った実践的な比較パターンまで体系的に解説します。RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・ bashのif文はtest/[ ]/[[ ]]の3種類があり、用途で使い分ける
・ ファイル確認は-eや-fなど単項演算子、文字列比較は= と!=が基本
・ 数値比較は-eq・-lt・-gtなどtestコマンド専用の演算子を使う
・ 実務では終了ステータス($?)の活用とelifによる多岐分岐が重要

続きを読む "bashのif文とtest条件式の使い方|ファイル・文字列・数値の比較から実践例まで"

atコマンドでLinuxのワンショットジョブを実行する方法|crontabとの使い分けと実践例

「バッチ処理を1回だけ深夜に走らせたいのに、crontabに書くのは大げさだし、実行後に消し忘れそうで怖い」
そんな場面に刺さるのが at コマンドです。

at は「指定した時刻に1回だけコマンドを実行する」ためのジョブスケジューラーです。crontab のように繰り返し実行する設定は不要で、実行が終わればジョブは自動的に消えます。

この記事では、at コマンドの基本的な使い方から、ジョブの確認・削除、crontab・systemd timer との使い分けまでを RHEL 9.4 / Ubuntu 24.04 LTS で動作確認した内容をもとに解説します。

この記事のポイント

・at コマンドは「1回だけ・指定時刻に」ジョブを実行するワンショットスケジューラー
・at -l(atq)でキュー確認、atrm でジョブ削除ができる
・crontab は繰り返し実行、at はワンショット、systemd timer は高機能な1回実行に使い分ける
・atd サービスが起動していないと at は動かない——まず systemctl status atd で確認する

続きを読む "atコマンドでLinuxのワンショットジョブを実行する方法|crontabとの使い分けと実践例"

while readコマンドでシェルスクリプトのファイルを1行ずつ処理する方法|IFS設定とCSV・ログ解析の実践例も

「シェルスクリプトでファイルの中身を1行ずつ処理したいのに、うまくいかない」
そんなつまずきを抱えたまま、forループやcatを組み合わせて試行錯誤していませんか。

実は、Bashには while read というファイルを1行ずつ読み込むための専用の書き方があります。
ログファイルの解析、CSVの一括処理、サーバー一覧への順次SSH接続など、現場で繰り返し使う場面がある実務必須の構文です。

この記事では、while read の基本構文から、IFSによる区切り文字のカスタマイズ、CSVやTSVの処理、
よくあるトラブルの対処法まで、RHEL 9.4 / Ubuntu 24.04 LTS の動作確認済みコマンドで解説します。

この記事のポイント

・ while read line でファイルを1行ずつ確実に処理できる
・ IFS=","で区切り文字を変えればCSV・TSVにも対応できる
・ while readはfor+catより安全で空白・改行を壊さない
・ 末尾改行なし・バックスラッシュ・末尾スペースに注意が必要

続きを読む "while readコマンドでシェルスクリプトのファイルを1行ずつ処理する方法|IFS設定とCSV・ログ解析の実践例も"

mktempコマンドでシェルスクリプトの一時ファイルを安全に作成する方法|並列処理の衝突防止と自動削除も

「シェルスクリプトで一時ファイルを /tmp/tmp_file.txt と決め打ちしていたら、別のプロセスと衝突してデータが壊れた」
そんな経験はありませんか?

一時ファイルの名前を固定していると、並列実行時の上書き・競合リスクがあります。
mktemp コマンドを使えば、重複しないユニークなファイル名を自動生成できます。

この記事では、mktemp コマンドの基本的な使い方から、シェルスクリプトでの安全な一時ファイル管理、自動削除(trap との組み合わせ)まで解説します。
RHEL 9.4 / Ubuntu 24.04 LTS で動作確認済みです。

この記事のポイント

・mktemp でユニークな一時ファイルを自動生成できる
・-d オプションで一時ディレクトリも作れる
・trap と組み合わせてスクリプト終了時に自動削除する
・並列実行時の競合・上書き事故を根本から防げる

続きを読む "mktempコマンドでシェルスクリプトの一時ファイルを安全に作成する方法|並列処理の衝突防止と自動削除も"

set -xコマンドでシェルスクリプトをデバッグする方法|set -e・set -uとの組み合わせも

「シェルスクリプトを書いたのに、なぜかエラーになる」
「どこで止まっているのか、原因が全くわからない」

シェルスクリプトのデバッグは、初心者だけでなく中級者でも手が止まりやすいポイントです。Linuxサーバーの運用自動化を進めるほど、スクリプトが複雑になり、バグの原因追跡が難しくなります。

この記事では、Bashの組み込みオプション set -x(トレースモード)を中心に、set -e(エラー即終了)・set -u(未定義変数をエラーに)との組み合わせによるデバッグ手法を解説します。RHEL 9.4 / Ubuntu 24.04 LTS で動作確認済みの実践的な内容です。

この記事のポイント

・set -x を使うと実行コマンドがトレース表示されデバッグが容易になる
・set -e でスクリプトをエラー発生時に即終了させ被害を最小化できる
・set -u で未定義変数を早期検知し変数名ミスのバグを防げる
・3つを組み合わせた set -eux が現場のシェルスクリプト冒頭の定番形式

続きを読む "set -xコマンドでシェルスクリプトをデバッグする方法|set -e・set -uとの組み合わせも"

jqコマンドでJSONを解析・加工する方法|フィルタ・整形・抽出の実践例も

「curlでAPIのレスポンスを取得したけれど、JSONが1行に詰まっていて読めない」 「シェルスクリプトでJSONの特定フィールドだけ取り出したいのに、awkやsedでは複雑すぎる」 サーバー運用やインフラ自動化の現場では、APIやクラウドのCLIツールがJSON形式でデータを返してくることが日常茶飯事です。そこで必須になるのが jq コマンドです。 この記事では、jq の基本的なインストールから、JSON整形・フィールド抽出・配列処理・条件フィルタリング、そしてシェルスクリプトへの組み込みまで、現場で実際に使われるノウハウをまとめて解説します。 RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・jq . でJSONを整形して人間が読みやすい形に変換できる
・.フィールド名でネストしたキーも簡単に抽出できる
・.[index]や.[]で配列要素の取り出しや展開ができる
・select()で条件フィルタリングし、必要なデータだけ抽出できる

続きを読む "jqコマンドでJSONを解析・加工する方法|フィルタ・整形・抽出の実践例も"

envsubstコマンドでシェル変数を環境変数で展開する方法|テンプレートファイルの動的生成と実務活用も

「設定ファイルをサーバーごとに手書きで変えるのが面倒だ。」
「Dockerfileや nginx.conf のIPアドレス・ドメインをまとめて差し替えたい。」

こういった悩みを抱えているなら、envsubst コマンドがそのまま解決策になります。
envsubst は環境変数をテンプレート文字列に埋め込むだけのシンプルなコマンドですが、
設定ファイルの動的生成・CI/CD パイプライン・Docker エントリーポイントと組み合わせると
驚くほどの作業を自動化できます。

この記事では、envsubst コマンドの基本から実務でよく使うパターンまで
RHEL 9.4 / Ubuntu 24.04 LTS の実機で確認した手順で解説します。

この記事のポイント

・envsubst はテンプレートの $VAR を環境変数で一括置換するコマンド
・置換対象変数を限定する書き方で誤置換を防げる
・nginx.conf や Docker エントリーポイントとの組み合わせが実務の定番
・変数が未定義の場合は空文字に展開される点に注意

続きを読む "envsubstコマンドでシェル変数を環境変数で展開する方法|テンプレートファイルの動的生成と実務活用も"

timeoutコマンドで制限時間付きでコマンドを実行する方法|ハングアップ対策とシェルスクリプト活用も

「コマンドを実行したら、いつまで経っても終わらない」
サーバー運用をしていると、ネットワーク遅延やデッドロックでコマンドがハングアップするケースは珍しくありません。

この記事では、timeout コマンドを使って制限時間付きでコマンドを実行する方法を解説します。
シェルスクリプトでのタイムアウト処理、終了コードの読み方、実務でよく使う組み合わせパターンまでカバーします。

この記事のポイント

・timeout コマンドで指定秒数を超えたプロセスを自動終了できる
・終了コード 124 で「タイムアウトによる終了」を判定できる
・--kill-after で SIGTERM の後に SIGKILL を送るダブル保険が設定できる
・cron ジョブや API 呼び出しのハングアップ対策として積極的に使う

続きを読む "timeoutコマンドで制限時間付きでコマンドを実行する方法|ハングアップ対策とシェルスクリプト活用も"

trapコマンドでbashスクリプトのシグナルを捕捉・処理する方法|一時ファイル削除やエラー終了処理の実践例も

「スクリプトをCtrl+Cで止めたら、一時ファイルが残ったままになってしまった…」
そういった経験をしたサーバー管理者は多いはずです。

bashスクリプトで本番運用をしていると、途中終了・割り込み・エラー時のクリーンアップは避けて通れません。一時ファイルやロックファイルを作るスクリプトが不意に中断されると、次回実行時に「古いロックファイルが残っている」「tmpディレクトリが膨らんでいる」という問題が起きます。

この記事では、bashの組み込みコマンド trap を使ったシグナルの捕捉と後処理の方法を解説します。
一時ファイルの自動削除、エラー時の強制終了処理、複数シグナルへの対応まで、RHEL 9.4 / Ubuntu 24.04 LTS で動作確認した手順でお伝えします。

この記事のポイント

・trap はbash組み込みコマンドでシグナル受信時に任意の処理を実行できる
・trap "rm -f /tmp/$$.lock" EXIT で終了時に一時ファイルを自動削除できる
・INT/TERM/ERRの3シグナルを押さえれば実務の9割のケースに対応できる
・trap '' SIGINT でシグナルを無視し、重要処理を割り込みから守れる

続きを読む "trapコマンドでbashスクリプトのシグナルを捕捉・処理する方法|一時ファイル削除やエラー終了処理の実践例も"

getoptsコマンドでbashスクリプトの引数を処理する方法|オプション解析と実践例も

「シェルスクリプトにオプションを渡したいけど、$1・$2で受け取ると順番が変わったら壊れる…」
そういう悩みを抱えているサーバー管理者は多いです。

bashスクリプトを書き始めると、最初は位置パラメータ($1、$2…)で引数を受け取ります。しかしスクリプトが育ってきて「-v(詳細表示)」「-o 出力先」「-n(ドライラン)」といったオプションが増えてくると、位置パラメータでの管理はすぐに破綻します。

この記事では、bashの組み込みコマンド getopts を使ったオプション解析の方法を解説します。
基本的な1文字オプションの受け取り方から、引数付きオプション、エラー処理、実務で使えるスクリプト例まで、RHEL 9.4 / Ubuntu 24.04 LTS で動作確認した手順でお伝えします。

この記事のポイント

・getopts は bash 組み込みのオプション解析コマンドで外部コマンド不要
・while getopts "ab:c" opt; do case $opt in で1文字オプションを処理できる
・コロン付き(b:)は引数ありオプション、$OPTARG で値を取得する
・先頭コロン(":ab:")でエラーを自前処理してサイレントモードにできる

続きを読む "getoptsコマンドでbashスクリプトの引数を処理する方法|オプション解析と実践例も"

nohupコマンドでSSH切断後もコマンドを実行し続ける方法|バックグラウンド実行とログ保存の実践例も

「長時間かかる処理を実行中にSSHが切れてしまった」——そんな経験を持つサーバー管理者は少なくないでしょう。
SSH切断と同時にコマンドが強制終了してしまうのは、端末を閉じたときにHUPシグナル(ハングアップシグナル)がプロセスに送られるためです。

この記事では、nohup コマンドの使い方を解説します。SSHが切断されても処理を継続させる基本手順から、バックグラウンド実行の組み合わせ、出力ログの管理まで、実務で即使える内容を網羅します。

この記事のポイント

・nohup コマンドで SSH 切断後もプロセスを継続実行できる
・nohup コマンド & でバックグラウンド実行と組み合わせるのが基本形
・出力は nohup.out に保存され、リダイレクトで任意ファイルに変更できる
・screen/tmux との違いと使い分けを押さえておくと現場で迷わない

続きを読む "nohupコマンドでSSH切断後もコマンドを実行し続ける方法|バックグラウンド実行とログ保存の実践例も"

typeコマンドでシェル組み込みと外部コマンドを区別する方法|whichとの違いやalias確認も

「このコマンドはどこにあるんだろう?」と思って which を打ったら何も出てこない——そんな経験はないでしょうか。
実は which が見つけられないコマンドが存在します。シェル組み込みコマンド(built-in)と呼ばれる種類です。

この記事では、type コマンドの使い方を解説します。コマンドがシェル組み込みなのか、外部バイナリなのか、エイリアスなのかを一発で判別できるようになります。シェルスクリプトのデバッグや、予期しない動作の原因調査にも役立ちます。

この記事のポイント

・type コマンドでシェル組み込み・外部コマンド・alias を即座に判別できる
・which が何も返さない場合は type で確認するのが正しい手順
・type -a で同名コマンドの全候補をまとめて確認できる
・スクリプトのデバッグや意図しない動作の原因特定に実務で頻繁に使う

続きを読む "typeコマンドでシェル組み込みと外部コマンドを区別する方法|whichとの違いやalias確認も"

シェルのオプション|bash の set コマンドで切り替える主要オプション実務集

「シェルスクリプトで set -e を入れるかどうか、毎回迷う」「ignoreeof は便利だけど、ログアウトできなくて困った」
bashのシェルオプションは40個以上あり、すべてを使いこなすのは難しいですが、実務で押さえるべきは10個ほどです。

この記事では、シェルのオプション機能を set コマンドで切り替える基本から、シェルスクリプト品質を上げる set -e / -u / -o pipefail、対話シェルで安全性を高める noclobber まで、現場で実際に使うオプションに絞って解説します。
bash 5.x / RHEL 9 / Rocky Linux 9 / Ubuntu 24.04 LTS で動作確認済みです。

この記事のポイント

・bash の set コマンドでシェルのオプションをon/offできる
・スクリプトには set -euo pipefail を入れるのが現場の標準
・対話シェルでは noclobber を有効にして上書き事故を防げる
・現在の設定一覧は set -o で確認できる

続きを読む "シェルのオプション|bash の set コマンドで切り替える主要オプション実務集"

Linux無料マニュアル(図解60P) 名前とメールで30秒登録