if 文のテスト

if 文のテスト


else if/else を追加する前は if (/Easy: /) .. 部分しかありませんでした。

awk -f oscp-notes.awkと入力して&cと入力すると、プログラムが起動します。
次に、else if部分を追加した後、適切なEasyシステムを印刷します。
これで、単純または中規模のコンピュータでは印刷されません。エラーは発生しません。もう一度読むには(ファイル)を閉じる必要があると思います。ついています。読み取り/閉じることが可能で、簡単/中/難/異常であるかどうかにかかわらず、ユーザー入力を含めるために残りの条件文を作成できるようにしたいです。可能ですか?

編集:close("TJnulls.txt")の代わりにclose(file)も試しました。


BEGIN { 
    printf "Please select a chapter by entering chapter number: "
    getline entry < "-"
    $2 == entry
    file = "TJnulls.txt"

if 文のテスト

    if (entry == 2) {
        printf "Please select difficulty (easy, medium, hard, insane): "
        getline difficulty < "-"
        $3 == difficulty
        if (difficulty == easy) {
            {print "\n"}
            {print "Obtaining the list of easy machines:\n"}
            while (( getline<file) > 0) {
            if (/Easy: /) {
                {print $2};
            } else {
                close("TJnulls.txt");
                break;
            }
            }
        } else if (difficulty == medium) {
            {print "\n"}
            {print "Obtaining the list of medium machines:\n"}
            while ( ( getline<file) > 0) {
            if (/Medium: /)
                {print $2}
            }
        }
     }
}

編集:次の操作を試しました。
forループを使用し、forループにif条件を追加し、if条件を追加しました。

BEGIN {
printf "Please select a chapter by entering chapter number: "
getline entry < "-"
# For loop
i = 0;
{
   for (i=1; i <= 11; i++) {
       if ( ( entry == i ) &&
          ( i == 2 ) )
           file = "TJnulls.txt"
           {print "\nPlease select a difficulty:\n (easy=1, medium=2, hard=3, insane=4, menu=0)\n"}
           getline difficulty < "-"
           x = 0;
           for (x=1; x <= 4; x++) {
               if ( ( difficulty == x ) &&
                  ( x == 1 ) )
                   file = "TJnulls.txt"
                   while ( (getline<file) > 0 ) {
                   if (/Easy: /)
                       {print $2}
                   }
               if ( ( difficulty == i ) &&
                  ( x == 2 ) )
                   file2 = "TJnulls.txt"
                   while ( (getline<file2) > 0 ) {
                   if (/Medium: /)
                       {print $2}
                   }
           }
   }
}
}

問題は、次のエラーが発生することです。
18: fatal: `<' リダイレクトの式にヌル文字列値があります。
また、ファイル変数(最初の変数)を削除すると、私に大きな音がします。

ベストアンサー1

動作する修正が見つかりました。私はこれが角括弧{に関する問題だと思います。

  BEGIN {
  # prompts user
  # user makes selection for chapter by entering a number 1-11
  {print "Please select a chapter by entering a number: "}
  getline entry < "-"

  # initializing f_1
  f_1 = 0;
  for ( f_1 = 1; f_1 <= 11; f_1++) {
      # if conditional statement if user selects chapter 2: TJ nulls list.
      # prompt user to select difficulty of machine.
      # future updates consider making entering text easy and converting into a number in the background
      if ( ( entry == f_1 ) && ( f_1 == 2 ) ) {
          {print "\nPlease select a difficulty: easy=1, medium=2, hard=3, insane=4, return=0"}
          getline difficulty < "-"

          # initializing f_2
          f_2 = 0;
          for ( f_2 = 1; f_2 <= 4; f_2++ ) {
              if ( ( difficulty == f_2 ) && ( f_2 == 1 ) ) {
                  {print "\nObtaining list of easy machines:\n" dash}
                  while ( ( getline<file02 ) >0 ) {
                  if (/Easy: /)
                      {print $2}
                  }
              }
              if ( ( difficulty == f_2 ) && ( f_2 == 2 ) ) {
                  {print "\nObtaining list of medium machines:\n" dash}
                  while ( ( getline<file02 ) >0 ) {
                  if (/Medium: /)
                      {print $2}
                  }
              }
          }
      }
  }

}

おすすめ記事