batでwslを呼び出す
まず、batファイルからwslを呼び出してシェルファイルを実行するのは以下で出来ます。
wsl ./some_file.sh
bat呼び出し時のカレントディレクトリに依存したくない場合は最初にcd %~dp0
を追加して、以下のようにすればどこからbatファイルを呼び出してもワークします
cd %~dp0
wsl ./some_file.sh
改行コードによるエラー
dir=$(cd $(dirname $0); pwd)
docker run --rm \
-v "${dir}/../api/public/openapi:/local" \
-v "${dir}/:/usr/openapi/" \
openapitools/openapi-generator-cli generate \
-i /usr/openapi/main/openapi.yml \
-g php-laravel -o /local/src \
-t /usr/openapi/template/php-laravel
こんな感じのコードをwsl上で実行したところ、以下のエラーが
docker: invalid reference format.
See 'docker run --help'.
./gen_openapi.sh: line 6: -v: command not found
./gen_openapi.sh: line 7: -v: command not found
./gen_openapi.sh: line 8: openapitools/openapi-generator-cli: No such file or directory
./gen_openapi.sh: line 9: -i: command not found
./gen_openapi.sh: line 10: -g: command not found
./gen_openapi.sh: line 11: -t: command not found
./gen_openapi.sh: line 12: $'\r': command not found
これはwindows上のファイルをwslから実行した際に改行コードの違い(widnowsはCRLFでlinuxはLF)により、シェルファイルの改行が上手く行かずに起きるエラーのようです。
windows上のshファイルをLFに変更したらうまく動きます
コメント