dポイントプレゼントキャンペーン実施中!

シェルスクリプト初心者です。

現在、zenity --entryを使って入力した変数を別のシェルスクリプトに渡して、NASのmysqlに接続してその変数でデータを抽出し、抽出されたファイルをftpでローカルにダウンロードして閲覧するということはできています。

しかし、変数をもっと簡単に渡したいと思っています。例えばHTMLのテーブルである項目をクリックすると、その変数がPHPに送られて処理されるような感じです。最終的に起動させるのがjnlpファイルでありPHPではどうしても起動できないので、シェルスクリプトからそのようなことをしたいのですが可能でしょうか?

A 回答 (4件)

補足事項、確認しました。



あらためて、 zentiy --list ではだめですか?
https://help.gnome.org/users/zenity/stable/list. …



ほとんどのシェルには、GUIはありません。
zenityのようは、他のコマンドの助けを借りることになります。
欲しい機能が無ければ、自作するしかないでしょう。
    • good
    • 0
この回答へのお礼

kmeeさん、度々有り難うございます。
書き忘れましたが実は zentiy --list はやってみました。手動ではもちろん動くのですが、mysqlの検索結果をlistにできるんでしょうか? あるいはレイアウトを自在に変更できるんでしょうか? そこがわかりませんでした。
で、zentiy --list では無理だろうと思いました。

そこで、今日の昼ごろからJavaを始めてみました。いろいろとネット検索してプログラムを作成して確認したところ、Java→シェルスクリプト→jnlpファイルは問題なく動きます。
そして私が「HTMLのテーブルのようなもの」というのは、JTableのイメージでした。(http://www.javadrive.jp/tutorial/jtable/index8.h …
このページの一番下にあるフレームこそdatagridviewそっくりですよね。
さらに現在、JDBCの設定がやっと終わって、Javaからmysqlに接続できるようになりました。JDBC接続だけで3時間もかかってしまって、Javaは難しいです。

思い描いていたイメージに到達するためには、抽出結果をJTableに表示すること、その表のある行をクリックすると設定された変数をあるシェルスクリプトに投げて起動できれば完成です。
と言ってもここからどのくらいかかるのか見当もつきませんけどね。

もう少し、このイメージで頑張ってみます。ありがとうございました。

お礼日時:2017/01/27 22:56

なにがやりたいのかが、今一つ伝わってこないのですが。



例えば
https://help.gnome.org/users/zenity/stable/index …
の --list とかは?

あとは、zenityのような感じに動作するプログラムを自作するか。
    • good
    • 0
この回答へのお礼

皆さんの回答から、私の書き方が適切でなかったと思います。

PHPからjnlpファイルを起動することは諦めているので、PHPを使うつもりはないです。
「HTMLのテーブルのようなもの」という書き方が悪かったようです。イメージで言うと例えばVBのdatagridviewのような感じでしょうか。
あるクエリで抽出したデータを一覧表にして、ある行をクリックすると別のシェルスクリプトに変数が送られて処理されるような感じです。

このようなことを実現するためにはPHP以外でどんな手段があるでしょうか?

お礼日時:2017/01/27 10:15

なんかタイトルと本文が整合してない気がしますし、やりたいことが説明から読み解けないんですが。

。。
シェルスクリプト内の変数に格納された値をPHPに渡したいということですか?
環境変数に入れてそれを読みだすか、あるいはPHPを実行する際の引数として渡して、PHPスクリプト側で$argvで受け取るとかすればどうでしょう?
    • good
    • 0
この回答へのお礼

締め切りになってしまって、ここにしか書き込めないのでここをお借りしてお礼申し上げます。
投稿から約1週間でやっとイメージ通りのことができました。

最初のイメージでは、

【Java】
1.Javaからmysqlに接続してクエリ結果を2次元配列に入れる。デフォルトのクエリは"WHERE StudyDate='$today'"
2.2次元配列をjtableで表示。
3.表示されたjtableのある行をクリックすると、その行のStudyInstanceがシェルスクリプトに送られてシェルスクリプト起動。
【シェルスクリプト】
4.そのStudyInstanceでmysqlからDicomのobjectファイルを配列で取得。
5.そのobjectファイルからフォルダ名を取得
6.objectファイル配列から純粋なDicomファイル名を抽出して配列へ。
7.DicomファイルをNASからローカルのTempフォルダにftpダウンロード。
8.hoge.shファイルを起動。

というようなことを考えていたのですが、Javaからシェルスクリプトに配列が送れないこと、文字列は送れるのですがその文字列でmysqlからデータを抽出できないことから、すべてJavaでやるしかないと覚悟して寝食を忘れて没頭した結果、何千回ものエラーを乗り越えてやっとできました。
15年ほど前にJavaに挑戦し3週間ほどで挫折して以来Javaを避けてきましたが、やってみると案外いけるかもしれないという気になりました。それも「おしえて」への投稿が覚悟につながったように思います。

ベストアンサーは2回回答して下さったkmeeさんにさせて頂きますが、すべての方にお礼を申し上げます。

お礼日時:2017/02/04 15:45

シェルスクリプトと言われても普通データ加工はsedなりawkなりでやりますよね?


jnlpファイルを起動する・・・という状況がわかりませんが
GUIツールでなければperlやphpからでも実行権限さえもっていれば
特定のファイルを実行することは可能だと思います
    • good
    • 0
この回答へのお礼

phpからjnlpファイルは起動できません。少なくとも私の作ったものは。

ですから、シェルスクリプトでGUIを使うなどして他のシェルスクリプトに変数を簡単に渡す方法がありますでしょうか?

お礼日時:2017/01/26 14:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!