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

87 vues (au cours des 30 derniers jours)
Tomoyuki Yamada
Tomoyuki Yamada le 24 Fév 2023
Commenté : Tomoyuki Yamada le 27 Fév 2023
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
シェルスクリプトの編集画面が表示されたのは、.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
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)

Community Treasure Hunt

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

Start Hunting!