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

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

 采纳的回答

Kojiro Saito
Kojiro Saito 2023-2-24
编辑:Kojiro Saito 2023-2-27

1 个投票

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

回答、ありがとうございます。確かに、編集画面は出ずに、コードは実行できました。
しかし、エラーメッセージが出てしまいます。
シェルスクリプト(run.sh)があるフォルダーでの実行では、エラーメッセージが出ずに実行完了できるのですが。。。
とりあえず、一歩前進です。
どのようなエラーメッセージが出ていますか?
よくわからないエラーメッセージが出ます。
>> 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
お分かりになるでしょうか?
エラーが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) % 以前のフォルダーに戻る
回答にも追記しておきました。
回答、ありがとうございます。
成功しました。
本当に助かりました。

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!