cygwinフォルダのシェルスクリプト(.sh)を実行したい。
조회 수: 84 (최근 30일)
이전 댓글 표시
MATLABから、cygwinフォルダのシェルスクリプト(.sh)を実行しようと思い、system('パス名\**.sh')を実行すると、シェルスクリプトの編集画面が画面に登場し、実行はできませんでした。原因は、何なんでしょうか?もしお分かりになれば、教えてくださると幸いです。
댓글 수: 0
채택된 답변
Kojiro Saito
2023년 2월 24일
편집: Kojiro Saito
2023년 2월 27일
シェルスクリプトの編集画面が表示されたのは、.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
Kojiro Saito
2023년 2월 27일
편집: Kojiro Saito
2023년 2월 27일
エラーが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개)
참고 항목
카테고리
Help Center 및 File Exchange에서 インストールとライセンスの紹介에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!