cygwinフォルダ​のシェルスクリプト(​.sh)を実行したい​。

99 views (last 30 days)
Tomoyuki Yamada
Tomoyuki Yamada on 24 Feb 2023
Commented: Tomoyuki Yamada on 27 Feb 2023
MATLABから、cygwinフォルダのシェルスクリプト(.sh)を実行しようと思い、system('パス名\**.sh')を実行すると、シェルスクリプトの編集画面が画面に登場し、実行はできませんでした。原因は、何なんでしょうか?もしお分かりになれば、教えてくださると幸いです。

Accepted Answer

Kojiro Saito
Kojiro Saito on 24 Feb 2023
Edited: Kojiro Saito on 27 Feb 2023
シェルスクリプトの編集画面が表示されたのは、.shファイルのWindowsの既定のプログラムがエディターになっているからではないでしょうか。
以下のようなコードで実行ができると思います。
system('C:\cygwin64\bin\sh C:\cygwin64\home\USERNAME\run.sh');
Cygwinのインストールパスを「C:\cygwin64」、シェルスクリプト(run.sh)があるフォルダーをユーザー「USERNAME」のホームディレクトリの直下にしていますが、適宜変更してみてください。
追記
.shファイルの中で他のshファイルを呼び出す場合には、現在のフォルダーを移動しておき、exprなどのコマンドも使用する場合はCygwinのbinフォルダーを環境変数PATHに追加しておく必要があります。
prevFolder = cd('C:\Users\1000004364\Desktop\230208_MacSim_original\230208_MacSim'); % wlan.shとsim.shのフォルダーに移動
setenv("PATH", getenv("PATH")+";C:\cygwin64\bin\"); % CygwinのbinフォルダーをPATHに追加
system('sh wlan.sh');
cd(prevFolder) % 以前のフォルダーに戻る
  5 Comments
Kojiro Saito
Kojiro Saito on 27 Feb 2023
Edited: Kojiro Saito on 27 Feb 2023
エラーが2種類出ています。
./sim: No such file or directory」はwlan.shと同じフォルダーにあるsim.shを見つけられていないためで、「expr: command not found」と「[: -le: unary operator expected」はCygwinのbinフォルダーにあるexpr.exe[.exeが環境変数のPATHに入っていないためです。
以下のようにMATLABコードを変更すればエラーなく実行できるようになります。
prevFolder = cd('C:\Users\1000004364\Desktop\230208_MacSim_original\230208_MacSim'); % wlan.shとsim.shのフォルダーに移動
setenv("PATH", getenv("PATH")+";C:\cygwin64\bin\"); % CygwinのbinフォルダーをPATHに追加
system('sh wlan.sh');
cd(prevFolder) % 以前のフォルダーに戻る
回答にも追記しておきました。
Tomoyuki Yamada
Tomoyuki Yamada on 27 Feb 2023
回答、ありがとうございます。
成功しました。
本当に助かりました。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!