公式アカウントからの投稿が始まります

自分でも色々調べたのですが、手に負えなかったので質問させていただきます。何度も質問する形になって申し訳ないです。

今取り組んでいる課題の1つに、プログラム実行時に引数として"<"と"ABC"(ABCはファイル名)を指定するとABCに書かれたスクリプトを実行する。というものがあります。

myprogram < scriptfile(←のような感じです)

それで、第1引数が"<"なら第2引数のファイルを実行する。というようにしようと思ったのですが、Argv[1]に"<"が格納されません。

引数に"<"を指定すると別の処理をするらしいことは調べたのでわかったのですが、どうにか"<"を格納できないでしょうか?(つまりは、引数が"<"の時とそうでない時で分岐できるようにしたいのです)

あと、スクリプトのファイル名もArgv[2]に格納できないんですが、第2引数に指定された文字列はどこへ行ってしまったんでしょうか?

何度もすいませんがよろしくお願いいたします。

A 回答 (5件)

課題以前にそれまでの演習資料を全部読み直した方が良いと思いますよ。



「プログラム実行時に引数として"<"と"ABC"(ABCはファイル名)を指定するとABCに書かれたスクリプトを実行する」
というのは「第1引数が"<"なら第2引数のファイルを実行する。」という意味の課題ではないと思いますが。

学校の課題のようなのであえてヒントだけにしておきます。
    • good
    • 0
この回答へのお礼

解答していただいた皆さんありがとうございました。

myprogram < scriptfile

このように、プログラムを実行するとscriptfileにかかれたスクリプトを実行するようなプログラムを作成するのでしたが、「第1引数が"<"なら第2引数のファイルを実行する。」ようなプログラムの作成だと思い込んでいました。

勘違いをしたまま質問してしまって申し訳ないです。

お礼日時:2007/08/02 21:10

問題文を載せろはいいませんけど、



> myprogram < scriptfile
> この形(インターフェイス?)は変えてはいけないのです。。

myprogram < scriptfile

とシェルのコマンドラインから入力させといて、
なおかつ myprogramのなかから リダイレクト記号とか
リダイレクト元のファイル名を取得しろというのは
無茶な話です。
問題文を誤解しているとかはないですか?

あるいは#3でjactaさんが質問していますが
よっぽど特殊な環境だったりするとか。
    • good
    • 0

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

    • good
    • 0

ならば



"myprogram < scriptfile"
    • good
    • 0

> myprogram < scriptfile(←のような感じです)



こう書くと、'<' なんかはシェルが先に喰ってしまいますので
myprogram にはわたりません。

環境がWindowsかUnix系か等でちょっと違いが出ますが、

myprogram "<" scriptfile

とすれば、
argv[0] → "myprogram"
argv[1] → "<"
argv[2] → "scriptfile"

になります。

>第2引数に指定された文字列はどこへ行ってしまったんでしょうか?

'<' に対応する入力としてシェルが喰ってしまってます。
myprogramの標準入力から読み込みをすれば
scriptfileの内容がでてきますよ。

この回答への補足

早速のご解答ありがとうございます。

myprogram < scriptfile
この形(インターフェイス?)は変えてはいけないのです。。

説明不足で申し訳ないです。。

補足日時:2007/08/02 15:08
    • good
    • 0

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