WindowsのLinuxコマンドライン環境でのBash言語において、WSL BashからPowershellやcmd.exeなどのWindowsのコマンドを実行するベターな方法について少し紹介します。
今までは、powershell.exe ruby -e "puts 'OK'"
みたいにやってたんですが、
まぁこれって、察せると思いますが、エラー結構でます。
ruby -e "puts 'OK'"
の部分がBashのスクリプトとして機能してしまっていることが原因です。
powershell.exe
の後に続くコードが長くなればなるほど、エラー率上がります。
少なくとも、このやり方だとpowershellで実行したコードと同じ出力が得られる確証はありません。
エスケープとか、忘れたらエラーになるし、最悪変なコードが実行されて大変なことになりかねません。
ということで、これからはこうすることにしました。
powershell.exe - <<'EOF'
ruby -e "puts 'OK'"
EOF