Shell

Shell Script

【Shell Script】実践:ファイルを自動でバックアップするシェルスクリプトを作る

こんにちは、かつコーチです。シェル関数・sed/awk・set -eによるエラーハンドリング・cronによる定期実行と、ここまで一通りの部品を解説してきました。今回はシェルスクリプト編の最終回として、これらの部品を組み合わせ、実際に使える自...
Shell Script

【Shell Script】cronで定期実行するスクリプトを組む:書式と設定手順を解説

こんにちは、かつコーチです。set -eによるエラーハンドリングまで押さえたところで、ここからは実践・自動化編に入ります。ここまで作ってきたシェルスクリプトは、手動で実行することを前提にしていました。今回は、cronを使ってスクリプトを決ま...
Shell Script

【Shell Script】set -eなどエラーハンドリングの基本:シェルスクリプトを安全に止める書き方

こんにちは、かつコーチです。sed・awkでのテキスト処理に続いて、今回はエラーハンドリングを扱います。前提知識ありきで、set -eを中心に、実務で必ずと言っていいほど踏む落とし穴まで踏み込んで解説します。エラーハンドリングとは:前提の整...
Shell Script

【Shell Script】sed・awkと連携した文字列操作の基本:シェルスクリプトでのテキスト処理

こんにちは、かつコーチです。シェル関数まで押さえたところで、ここからは実践Tips編に入ります。シェルスクリプトの実務でログ解析や設定ファイルの一括編集をしていると、grepだけでは物足りず、sedとawkの出番が必ず来ます。前提知識ありき...
Shell Script

【Shell Script】シェル関数の定義と使い方:処理をまとめて再利用する書き方

こんにちは、かつコーチです。制御構文編(if・for・while・case)はここまでで一通り押さえてきました。スクリプトが長くなってくると、同じような処理を何度も書き写している自分に気づくはずです。今回は、そうした重複をなくすシェル関数の...
Shell Script

【Shell Script】パイプとリダイレクトでコマンドをつなげる

こんにちは、かつコーチです。「1つのコマンドの結果を、別のコマンドに渡して加工したい」「実行結果をファイルに残しておきたい」。シェルスクリプトの真価は、複数のコマンドを組み合わせられる点にあります。この記事では、コマンド同士をつなげるパイプ...
Shell Script

【Shell Script】標準入力・標準出力・標準エラー出力の仕組み

こんにちは、かつコーチです。「2>&1って何のためにあるの」「エラーメッセージだけを別のログファイルに残したい」。シェルスクリプトを書いていると、必ずと言っていいほど突き当たるのが入出力の仕組みです。この記事では、コマンドの入出力の土台とな...
Shell Script

【Shell Script】コマンドライン引数の受け取り方(1・@・$#)

こんにちは、かつコーチです。「スクリプトの中身を毎回書き換えて実行している」。それでは自動化のメリットが半減してしまいます。この記事では、実行時に外から値を渡せるコマンドライン引数の受け取り方を、$1・$@・$#を中心に初心者向けに解説しま...
Shell Script

【Shell Script】case文で複数条件をすっきり書く

こんにちは、かつコーチです。「if・elifが何段も連なって、どこで何を判定しているのか読みにくい」。1つの変数の値によって処理を分けるスクリプトを書いていると、そんな悩みにぶつかります。この記事では、複数の条件分岐をすっきり書けるcase...
Shell Script

【Shell Script】for文・whileループで繰り返し処理をする

こんにちは、かつコーチです。「同じコマンドを10回コピペして実行している」「ファイルを1つずつ手作業で処理している」。そんな作業に心当たりがあるなら、ループを覚えるタイミングです。この記事では、シェルスクリプトの繰り返し処理の基本であるfo...
Shell Script

【Shell Script】test・[ ]・の違いと比較演算子

こんにちは、かつコーチです。前回は、if文の基本形と、数値比較・文字列比較の演算子の違いを解説しました。条件式の中でさらっと使っていたですが、実はtestコマンドや]という仲間があり、それぞれ挙動が微妙に異なります。「なぜ現場のスクリプトに...
Shell Script

【Shell Script】if文で条件分岐する基本

こんにちは、かつコーチです。前回は、値を保存しておく変数の使い方と、クォーティングの落とし穴を解説しました。今回からは制御構文編に入り、まずは条件によって処理を分けるif文を扱います。「ファイルがあれば処理する、なければスキップする」といっ...
Shell Script

【Shell Script】変数の使い方:宣言・展開・クォーティング

こんにちは、かつコーチです。前回は、シェバンと実行権限というスクリプトを「動かす」ための土台を解説しました。今回からは、スクリプトの中身をより実用的にしていく回として、変数の使い方を扱います。変数を使いこなせるようになると、同じスクリプトで...
Shell Script

【Shell Script】シェバン(#!/bin/bash)と実行権限の付け方

こんにちは、かつコーチです。前回は、シェルスクリプトがコマンドをまとめて自動実行する仕組みであることを解説しました。サンプルの中で、1行目にさらっと書いた#!/bin/bashが気になった方も多いと思います。今回は、この記述の正体と、実行に...
Shell Script

【Shell Script】シェルスクリプトとは?コマンドをまとめて自動実行する仕組み

こんにちは、かつコーチです。Linux基礎編では、ターミナルでコマンドを1つずつ打つ操作を解説してきました。今回からは新シリーズとして、そのコマンドを「まとめて自動実行する」ためのシェルスクリプトを扱っていきます。毎日同じコマンドを何行も打...