バッチファイルのメンテをしていたのですが、Linuxコマンドを記述したbashファイルでした。
Windowsオンリーで育った私は、じゃあ、Cmderあたりで動かせるんじゃないかなーと思って動かしたのですが、失敗でした。
CmderはLinuxのコマンドを動かすことができます。lsとかcurlとか。
ですが、ここに落とし穴があります。
WindowsにもLinuxにも同じ名前のコマンドがあるのです。
その一つがdateコマンドです。そして、挙動が異なります。
Linuxは現在日時を表示しますが、Windowsではシステム日時を設定するコマンドです。
一時的にでもLinuxコマンドを優先するように出来ないかと調べましたがCmderには不可能そうです。
Git for Windowsでコマンドプロンプト上でUNIXコマンドを使えるようにしても同様です。Windowsコマンドが優先されます。(bash.exeを直接実行すれば可能です)
なので、bashファイルをより正しく動かすにはWindows Subsystem for Linuxを使うことになります。
echoについて
echoについても挙動が異なります。
簡単な出力だけであれば問題ありませんが、Linuxコマンドの方がechoに対して引数オプションが多様です。