写真提供:マイナビニュース

写真拡大

Windows 10 Anniversary UpdateからサポートしたWSL(Windows Subsystem for Linux)。その結果としてWindows 10上でもBUW(Bash on Ubuntu on Windows)が動作し、各種Linuxコマンドが利用可能になった。本連載ではWSLに関する情報や、Bashから実行するシェルスクリプトを紹介する。

○Microsoft Office 2016の最新バージョンを確認する

Microsoftのサブスクリプションサービスである「Office 365」に含まれる最新バージョンのOffice(=Office 2016)は、毎月更新する「期限内チャネル」と4カ月ごとに更新する「延期チャネル」の2チャネルが存在する。この他にもOffice Insiderプログラムも用意されているが、Office 365サブスクライバーは必然的にいずれかを選択しなければならない。

どちらのチャネルにメリットがあるかは、利用者の使用スタイルによって異なるため言及は避けたいものの、困るのは気付かぬうちに更新プログラムが適用されてしまう点だ。アカウントページから能動的に更新プログラムの適用を実行できるものの、Microsoftは「更新日は変更される可能性がある」との理由で正確な日付を公表していない。また、月に複数回更新されることもあるという。

そのため我々利用者は公式サイトの情報を元に最新版のOfficeに関する情報を収集しなければならない。だが、同サイトはRSSフィードなどを用意していないため、更新状況を把握することは難しいだろう。一昔前に流行(はや)ったWeb更新チェッカーなどのツールも動的なWebページの増加で死屍(しし)累々という状態だ。

そこで考えたのが公式サイトからバージョン情報を取得するという方法。cURLコマンドなどを使って必要な情報を抽出すれば、良いはずである。いつもどおり任意のテキストエディターに以下の内容を入力し、必要に応じて出力先のパスなどを変更してから、chmodコマンドなどで実行権限を与えて動作を確認してほしい。

本シェルスクリプトを実行すると、日本語版の公式サイトからHTMLファイルを取得し、各OSのバージョン情報を抽出して標準出力に書き出す。

それではシェルスクリプトの内容を解説しよう。まずは9行目で指定したURLからHTMLファイルをダウンロードする。今回は配列化するまでもないため、単純にダウンロードする仕組みを用いた。次に10〜13行のfor文で事前にgrepを使ってOS名を元に必要な行を抽出し、「-A 2」はパターンにマッチした行の後に続く2行まで表示するというもの。さらに取得した内容はPerlで不用なタグや文字列を削除し、改行コードも削除して1行にまとめている。

15〜27行のcase文は各OS名にマッチした部分で分岐させ、変数Objに格納された文字列から不要な部分をcutコマンドで削除している。セパレート文字を空白としているため、HTML側の内容が変化した場合は修正が必要になると思われるが、執筆時点ではひとまずこの指定で成功した。後は各変数に代入した結果を29〜33行で出力して終了する。

極めてシンプルなシェルスクリプトだが、先に紹介した日本語ページは若干の翻訳遅延が発生し、英語版の公式サイトと比べると情報が古くなってしまう。この点は筆者も気になるところだが、次回以降の課題として目をつぶることにした。

阿久津良和(Cactus)

(阿久津良和)