実行可能なコマンドプログラムからコマンドラインフラグまたはオプションを取得する方法

実行可能なコマンドプログラムからコマンドラインフラグまたはオプションを取得する方法

私は実行するたびに新しいパスワードを生成し、パスワードの長さを尋ね、新しい疑似ランダムパスワードを生成する練習用C ++プログラムを作成しました。

すべてのディレクトリで実行できるように、そのディレクトリをPATH環境変数に追加しました。

ターミナルから呼び出すことができるように、コマンドライン引数を取得するために実行可能ファイルを変更する方法を知りたいです。

newpass -10
または
newpass 10

どちらも10文字のパスワードを生成します。現在のプログラムは、次のように実行する必要があるターゲットファイルとして持っています。

./newpass

答え1

Getopt単一のコマンドライン引数を取得するのは少し過剰です。後でプログラムにさらにオプションとパラメータが必要な場合getoptブースト計画オプション図書館。ほとんどの言語(Java、Perl、Python、C、C ++、Pascalなど)には、コマンドライン引数を返す関数またはステートメントライブラリがあります。

C または C++ では、最初の引数 "10" または他の引数を整数に簡単に変換できます。すべてのコマンドライン引数は文字列(charゼロで終わる配列)です。

このような:

  1. コマンドライン引数を確認するには、基本プログラムにコードを追加してください。例:

    int pwlength(10); // or whatever the default
    if (argc > 1) {
         // put code here to convert the string in argv[0] to an integer
         // and store in pwlength.
         // If the string cannot be converted,
         //    Print an error message and exit the program with
         //    the statement "return 1;" or "exit(1);" which
         //    notifies the caller of the executable that an error occurred.
     }
    std::cout << "Your password length will be: " << pwlength << std::endl;
    
  2. 次へ追加目次ファイルが変数newpassに保存される場所。たとえば、そのファイルがディレクトリにあるとします。PATHnewpass$HOME/bin
    PATH="$PATH:$HOME/bin"

  3. newpassファイルのファイルモードを変更するには、次のコマンドを使用しますchmod
    chmod +x newpass

答え2

恥ずかしくここからコピーしました。プログラムをどこでも実行可能にする方法

「コマンドラインにエクスポートのみを入力すると、PATH=$PATH:</path/to/file>セッション期間中のみ持続します。

永久に変更するには、PATH=$PATH:</path/to/file>〜/ .bashrcファイルにエクスポートを追加します(最後のみ)。 - オアダムズ

関連情報