PowerShell 7.0.0 Preview5新機能 - パイプラインチェイン演算子

【連載】

PowerShell Core入門 - 基本コマンドの使い方

【第72回】PowerShell 7.0.0 Preview5新機能 - パイプラインチェイン演算子

[2019/11/01 07:00]後藤大地 ブックマーク ブックマーク

  • サーバ/ストレージ

サーバ/ストレージ

パイプラインチェイン演算子

PowerShell 7はそろそろ正式リリースへ向けたバグ修正や互換性向上、安定性改善、パフォーマンス向上などに取り組むべきタイミングに来ているが、先日公開された「PowerShell 7 Preview 5」にはいくつもの新機能が追加されている。どの機能も興味深いが、UNIX系のシェルに慣れたユーザーにとっては新しく追加された「パイプラインチェイン演算子」が特に興味深い。

新しく追加されたパイプラインチェイン演算子は次のようなものだ。

■パイプラインチェイン演算子「&&」

コマンド1 && コマンド2

■パイプラインチェイン演算子「||」

コマンド1 || コマンド2

「&&」のほうは、コマンド1が正しく終了するとコマンド2が実行され、コマンド1が正しく終了しなかった場合にはコマンド2は実行されない。「||」はこれとは逆に、コマンド1が正しく終了した場合にはコマンド2は実行されず、コマンド1が正しく終了しなかった場合にコマンド2が実行される。

コマンドの部分はコマンドレットでも関数でもエイリアスでもかまわないし、それらの組み合わせでも問題ない。また、パイプラインチェイン演算子は次のように複数回数組み合わせて利用することもできる。

■「&&」だけをつなげた場合

コマンド1 && コマンド2 && コマンド3

■「||」だけをつなげた場合

コマンド1 || コマンド2 || コマンド3

■「&&」と「||」を組み合わせた場合(その1)

コマンド1 && コマンド2 || コマンド3

■「&&」と「||」を組み合わせた場合(その2)

コマンド1 || コマンド2 && コマンド3

パイプラインチェイン演算子を使うと、「処理が成功しなかった場合にはこの処理を実行する」、または「処理が成功した場合にはこの処理を実行する」といった内容を簡単に記述することができる。これまでもif制御構文と「$?」と使えば同じことはできたが、よりコンパクトに記述できるのがパイプラインチェイン演算子の特徴になる。

UNIX系のシェルではこの演算子は「制御演算子」「リスト演算子」「ショートサーキットリスト演算子」などといった言葉で呼ばれている。基本的な機能はPowerShell 7のパイプラインチェイン演算子と同じだ。

パイプラインチェイン演算子は便利な機能ではあるのだが、if制御構文で書いておいたほうが後から読んだ際に理解しやすいとも言え、読みやすさの点からいうと議論の余地がある。

しかし、この演算子はUNIX系のシェルではありふれた機能であり、PowerShellが目指している「ユーザーが求める機能」でもある。最近PowerShell 7に取り込まれている機能には、Linuxユーザーからの要望が大きく影響しているように見える。「UNIX系のシェルとの書き方の互換性を向上させることで、UNIX系のシェルからPowerShell 7へ移行するときの学習コストを下げる」――そういった狙いがあるように見える。

パイプラインチェイン演算子の実行サンプル

実際にPowerShell 7 Preview 5のパイプラインチェイン演算子を実行してみよう。次のサンプルは、コマンド1に相当する部分がすべて正しく終了するものだ。「&&」の場合にはコマンド2に相当する部分の処理も実行され、「||」ではコマンド2に相当する部分の処理は実行されていないことが確認できる。

コマンド1が成功する場合のサンプル

次のサンプルは、コマンド1に相当する部分がかならず失敗する場合のサンプルだ。「&&」の場合にはコマンド2に相当する部分が実行されていないことが確認できる。一方、「||」の場合にはコマンド2に相当する部分が実行されていることがわかる。

コマンド1が失敗する場合のサンプル

次のサンプルは、パイプラインチェイン演算子を2個使って3つのコマンドレットを接続した場合のサンプルだ。コマンド1、コマンド2、コマンド3のすべてが成功する場合の実行例となっている。これまでのサンプルで示した「&&」と「||」と同様の動作になっていることがわかる。

コマンドがすべて成功する場合のサンプル

次のサンプルはコマンド1とコマンド3は成功し、コマンド2は失敗するパターンでの実行例だ。こちらもこれまでのサンプルの組み合わせの通りに機能していることがわかる。

コマンド2が失敗する場合のサンプル

パイプラインチェインでは、最後に実行されたコマンドの終了値が「$?」に代入されることになる。次のように、最後に実行されたコマンドが成功していれば「True」、最後に実行されたコマンドが失敗していれば「False」となる。

パイプラインチェインで接続されたコマンドは、最後に実行されたコマンドの結果が「$?」に代入される

パイプラインチェイン演算子の特徴のほとんどはUNIX系のシェルとよく似ている。PowerShellが徐々にUNIX系のシェルの備えているシンタックスを提供するようになってきており、UNIX系シェルからの移行がより簡単になってきている。

参考資料

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】RPA入門 - ツールで学ぶ活用シーン

【連載】RPA入門 - ツールで学ぶ活用シーン

AIには、ルールベース、機械学習、深層学習(ディープラーニング)の3つのレベルがあり、レベルが上がるに連れてより高度な人工知能を実現しますが、AIのスピンオフという位置付けで、Digital Labor(仮想知的労働者)によるホワイトカラー業務の自動化を実現するRPAが注目されています。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
知りたい! カナコさん 皆で話そうAIのコト
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る