• ベストアンサー

プログラム実行時に引数"<"を指定したい。

自分でも色々調べたのですが、手に負えなかったので質問させていただきます。何度も質問する形になって申し訳ないです。 今取り組んでいる課題の1つに、プログラム実行時に引数として"<"と"ABC"(ABCはファイル名)を指定するとABCに書かれたスクリプトを実行する。というものがあります。 myprogram < scriptfile(←のような感じです) それで、第1引数が"<"なら第2引数のファイルを実行する。というようにしようと思ったのですが、Argv[1]に"<"が格納されません。 引数に"<"を指定すると別の処理をするらしいことは調べたのでわかったのですが、どうにか"<"を格納できないでしょうか?(つまりは、引数が"<"の時とそうでない時で分岐できるようにしたいのです) あと、スクリプトのファイル名もArgv[2]に格納できないんですが、第2引数に指定された文字列はどこへ行ってしまったんでしょうか? 何度もすいませんがよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.5

課題以前にそれまでの演習資料を全部読み直した方が良いと思いますよ。 「プログラム実行時に引数として"<"と"ABC"(ABCはファイル名)を指定するとABCに書かれたスクリプトを実行する」 というのは「第1引数が"<"なら第2引数のファイルを実行する。」という意味の課題ではないと思いますが。 学校の課題のようなのであえてヒントだけにしておきます。

felon
質問者

お礼

解答していただいた皆さんありがとうございました。 myprogram < scriptfile このように、プログラムを実行するとscriptfileにかかれたスクリプトを実行するようなプログラムを作成するのでしたが、「第1引数が"<"なら第2引数のファイルを実行する。」ようなプログラムの作成だと思い込んでいました。 勘違いをしたまま質問してしまって申し訳ないです。

その他の回答 (4)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

問題文を載せろはいいませんけど、 > myprogram < scriptfile > この形(インターフェイス?)は変えてはいけないのです。。 myprogram < scriptfile とシェルのコマンドラインから入力させといて、 なおかつ myprogramのなかから リダイレクト記号とか リダイレクト元のファイル名を取得しろというのは 無茶な話です。 問題文を誤解しているとかはないですか? あるいは#3でjactaさんが質問していますが よっぽど特殊な環境だったりするとか。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

環境を明確にしてください。

noname#39970
noname#39970
回答No.2

ならば "myprogram < scriptfile"

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

> myprogram < scriptfile(←のような感じです) こう書くと、'<' なんかはシェルが先に喰ってしまいますので myprogram にはわたりません。 環境がWindowsかUnix系か等でちょっと違いが出ますが、 myprogram "<" scriptfile とすれば、 argv[0] → "myprogram" argv[1] → "<" argv[2] → "scriptfile" になります。 >第2引数に指定された文字列はどこへ行ってしまったんでしょうか? '<' に対応する入力としてシェルが喰ってしまってます。 myprogramの標準入力から読み込みをすれば scriptfileの内容がでてきますよ。

felon
質問者

補足

早速のご解答ありがとうございます。 myprogram < scriptfile この形(インターフェイス?)は変えてはいけないのです。。 説明不足で申し訳ないです。。

関連するQ&A

専門家に質問してみよう