すくらっぷ あんど びるどー(したい)

AI・Obsidian・個人開発の試行錯誤ログ。 作業メモを、あとで使える知識に変えるための記録。

PowerShellで「演算子 '<' は予約されています」と出たときの対処法

はじめに

この記事では、PowerShellで < NUL を含むコマンドを実行したときに、「演算子 '<' は予約されています」と出る場合の対処法をまとめます。

環境

項目 内容
OS Windows
シェル PowerShell
ツール blogsync
実行場所 PowerShell
エラー文 演算子 '<' は予約されています / The '<' operator is reserved for future use.
実行したコマンド < NUL を含むcmd向けコマンド

確認状況

このエラーは、過去のblogsync運用メモに遭遇記録があり、今回の検証でも再現できました。

確認コマンド:

echo test < NUL

今回の環境では、英語で次のメッセージが出ました。

The '<' operator is reserved for future use.

結論

PowerShellでは、cmd向けの < NUL をそのまま使わない方が安全です。

PowerShellでは、パイプで入力を渡します。

echo "記事タイトル" | blogsync post --draft <BLOG_DOMAIN>

英語環境では、次のように表示されることもあります。

The '<' operator is reserved for future use.

原因

Windowsには、cmdとPowerShellがあります。

見た目はどちらも黒いターミナルに見えますが、構文が違います。

cmd向けの例をPowerShellにそのまま貼ると、記号の解釈が変わってエラーになることがあります。

確認すること

エラーが出たら、まずそのコマンド例がどのシェル向けか確認します。

cmd向けなのか
PowerShell向けなのか
Git Bash向けなのか
WSL向けなのか

特に <>&|、引用符まわりはシェルによって挙動が変わります。

blogsyncでの記事作成例

PowerShellでは、次の形が扱いやすいです。

echo "新しい記事" | blogsync post --draft <BLOG_DOMAIN>

タイトルを標準入力で渡して、下書き記事を作成します。

まとめ

PowerShellで < まわりのエラーが出たら、ツールの不具合ではなく、シェル構文の違いを疑います。

cmd向けの例を使っている場合は、PowerShell向けの書き方に置き換えるのが安全です。