2016-11-21 5 views
-1

私はC++プログラムをFedora 20で動かしています。今私はより多くのパラメータが必要ですが、どういうわけか新しいパラメータを取ることを拒否します。なぜ私のC++ main()は自分のパラメータを受け取りません

これは私がそれを起動する方法です:

$ ./runtest.sh怒り22 33

これがメイン内の最初のラインCOUT()である:

UICommTestが開始されます... argc = 2

私はargc = 4を期待しています。

これは私のメイン():

int main(int argc, char*argv[]) 
{ 

    std::cout << "UICommTest is starting ... argc="<< argc << std::endl; 

    if(argc == 1) 
    { 
     UICommTest::startTest(false); 
    } 
    else if(argc == 2) 
    { 
     if(string(argv[1]) == "true") 
     { 
      UICommTest::startTest(true); 
     } 
     else if(string(argv[1]) == "ire") 
     { 
      UICommTest::startTestIRE("-1", "-1"); 
     } 
     else 
     { 
      std::cout << "Usage:: ..." << std::endl; 
     } 
    } 
    else if(argc == 4) 
    { 
     if(string(argv[1]) == "ire") 
     { 
      UICommTest::startTestIRE(argv[2], argv[3]); 
     } 
     else 
     { 
      std::cout << "Usage:: ..." << std::endl; 
     } 
    } 
    else 
    { 
     std::cout << "Usage:: ..." << std::endl; 
    } 

    return EXIT_SUCCESS; 
} 

私はきれいに行い、数回行います。そして、私は新しい変化があることを確信しています。誰でもこれについて助けることができますか?

+3

runtest.shはシェルスクリプトまたはプログラムの名前ですか? – Fefux

+7

'runtest.sh'がすべてのパラメータを含む実行可能ファイルを呼び出すことを確認してください。簡単な例 'exec a.out $ *' –

+5

あなたのshは入力したパラメータを消費するでしょう。 –

答えて

4

シェルスクリプトruntest.shがあるようです。その中であなたはおそらく、この(パスは単なる./より長いものになる場合があります)のような行があります。

./UICommTest "$1" "$2" 

をあなたのプログラムだけで2つの引数を与えることは明らかです。これにその行を変更します。

./UICommTest "[email protected]" 

注:使用"[email protected]"重要なディテールが、それはそれは"$1" "$2" "$3" ...の同等に展開することを、特別な機能を持っています。引用符は重要なので、スペースを含むパラメータを渡すと、パラメータは1つのパラメータとして残ります。

関連する問題