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

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

 Réponse acceptée

Kojiro Saito
Kojiro Saito le 24 Fév 2023
Modifié(e) : Kojiro Saito le 27 Fév 2023

1 vote

シェルスクリプトの編集画面が表示されたのは、.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 commentaires

Tomoyuki Yamada
Tomoyuki Yamada le 27 Fév 2023
回答、ありがとうございます。確かに、編集画面は出ずに、コードは実行できました。
しかし、エラーメッセージが出てしまいます。
シェルスクリプト(run.sh)があるフォルダーでの実行では、エラーメッセージが出ずに実行完了できるのですが。。。
とりあえず、一歩前進です。
Kojiro Saito
Kojiro Saito le 27 Fév 2023
どのようなエラーメッセージが出ていますか?
Tomoyuki Yamada
Tomoyuki Yamada le 27 Fév 2023
よくわからないエラーメッセージが出ます。
>> system('C:\cygwin64\bin\sh C:\Users\1000004364\Desktop\230208_MacSim_original\230208_MacSim\wlan.sh')
C:\Users\1000004364\Desktop\230208_MacSim_original\230208_MacSim\wlan.sh: line 74: ./sim: No such file or directory
C:\Users\1000004364\Desktop\230208_MacSim_original\230208_MacSim\wlan.sh: line 82: expr: command not found
C:\Users\1000004364\Desktop\230208_MacSim_original\230208_MacSim\wlan.sh: line 71: [: -le: unary operator expected
ans =
127
お分かりになるでしょうか?
Kojiro Saito
Kojiro Saito le 27 Fév 2023
Modifié(e) : Kojiro Saito le 27 Fév 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 le 27 Fév 2023
回答、ありがとうございます。
成功しました。
本当に助かりました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!