前回まではUNIX系シェル(bash,zsh)でファイル内容の置き換えをしました。今回はWindows系シェルのPowerShellを使ってファイル内容の置き換え処理を行ってみます。
PowerShellは本家Windows以外にもありますが、環境によって動作するコマンドが異なる場合があります。ここでは、これまで通りのWindowsとMac版のPowerShellで説明します。

 と、その前に前回のbash,zshでの続きからです。前回はシェルを使って渡されたパラメーターに応じて処理を行いました。今回は少し便利かもしれない機能を説明します。なお、今回もサンプルファイルとシェルスクリプトはデスクトップ上に用意したsampleフォルダ内にあるものとします。cd ~/Desktop/sampleとコマンドを入力してカレントディレクトリを変更しておきましょう。

パラメーターを指定し忘れた場合の処理

 シェルからコマンドや文字を入力するのは人間です。人間は必ず間違えます。前回のシェルスクリプトでも、パラメーターを指定し忘れてしまう、もしくは素早く入力しすぎてパラメーターを入れる前にリターンキーを押してしまった!?みたいな事もあります。

こういうミスはプログラム側でカバーする必要があります。人間側が気をつけるべきだ、という意見もあるかもしれませんが、それは実際のところ良い対処方法ではありません。
 今は昔と違いメモリなど使えるリソースが豊富ですから、可能な限りミスをした場合の処理を入れておくのがよいと思います。自分は絶対にミスしないという人は、エラー処理を入れなくても構いません。その方がプログラムに取っては、分かりやすく見通しがよくなるというメリットもあるからです。

今回はパラメーターを指定し忘れた場合のみ対処してみましょう。まず、パラメーターを指定し忘れているというのを、どのように判断すればよいのか?ということです。
パラメーターをまったく指定していないという事はパラメーターの数がゼロだという事になります。都合のいいことにシェルには渡されたパラメーターの個数を保持している変数$#があります。

それでは実際にテストしてみましょう。以下のようにシェルスクリプトを作成し保存します。ファイル名はtest6.shとし実行権限を付けます。

#!/bin/bash
echo $#

./test6.shと入力して実行します。何もパラメーターを指定していないので画面には0が表示されます。

それでは次に./test6.sh 2021と入力して実行してみてください。今度はパラメーターが1つだけ指定されているので1が表示されます。

今度はパラメーターを変えて実行してみてください。指定したパラメーターの数が表示されるはずです。

パラメーターの数がわかれば、あとは指定し忘れた場合の処理を書くだけです。

ifによる条件分岐

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら