今回は前回に続いてファイルの内容を置き換えます。前回は直接コマンドを入力していましたが、今回はシェルスクリプトを利用します。シェルスクリプトを利用すると、より手軽に処理することができます。なお、今回はUNIX系シェルのbash,zshについて説明します。実行結果はmacOS BigSurのものになっていますが、他の環境でも同じように動作するはずです。macOS BigSurのbashのバージョンは3.2と古いままですが、今回の場合は動作には問題ありません。
今回も前回同様に処理するファイルはデスクトップ上にあるsampleディレクトリとします。cd ~/Desktop/sampleとコマンドを入力してカレントディレクトリを変更しておきましょう。
シェルスクリプトを作る
前回のinfotemp.txtファイル内容の置き換えには以下のsedコマンドを入力しました。
sed s/INFO/営業中/ infotemp.txt > info.txt
・infotemp.txtファイルの内容
ようこそ喫茶マイナビへ。さまざまなレトロUNIXマシンを用意して、お待ちしております。
INFO
Tel:00-0000-0000
url:myna-bee.shop
毎回このコマンドを入力するのは面倒ですから、このままシェルスクリプトにしてしまいましょう。シェルスクリプトにはお約束がありますが、まずは単純にこのコマンドをテキストファイルとして保存します。テキストエディタなどのアプリケーションで作成しても構いませんし、echoコマンドでも構いません。vi(vim)でもEMACSでも好きなもの、使い慣れているもので構いません。
入力が終わったら、このファイルをrep.shという名前で保存します。
ファイルができたら、実行できるようにします。これはファイルに実行権限を付与することで可能になります。実行権限を付与するにはchmodコマンドを使います。chmodの後に+xを指定し、その後に実行権限を付与するファイル名を指定します。
chmod +x rep.sh
実行権限を付与したら、以下のように入力してみましょう。ちなみに./rまで入力しタブキーを押すとシェルの自動入力補完機能が働きます。
./rep.sh
実行するとinfotemp.txtファイルの内容を置き換えたinfo.txtファイルが生成されます。catコマンドで内容を確認してみましょう。
cat info.txt
期待する結果になっているはずです。
このシェルスクリプト程度だと特定のシェルの機能を使っていないので、ほとんどのUNIXシェルで動作するでしょう。しかし、複雑な機能を持つシェルスクリプトでbashの機能を使いたい、zshの機能を使いたい場合には問題が発生してしまうことがあります。