ファイルと端末から入力を受け取ることができますか?END
awkスクリプト部分でユーザーにいくつかの質問をしたいと思います。
この入力は、処理するデータを含むファイルから読み取るのではなく、ユーザーが入力する必要があります。
END {
getline choice
if(choice == "Y")
print "OK"
}
ただし、選択は入力ファイルから読み込まれます。
答え1
/dev/tty
からまたはで読むことができます/dev/stdin
。
getline choice < "/dev/tty"
/dev/tty
/dev/null
かなり一般的で(まれであり、POSIX/dev/console
で要求されている場合でも)、あまり/dev/stdin
一般的ではありませんが、少なくともGNU awkはシステムにそのようなデバイス/特殊ファイルがない場合でもstdinとして認識します。
Linux(およびCygwin(他のUnixファミリーを除く))では、読み取りは/dev/stdin
stdin(fd 0)で読み取るのと同じではなく、むしろfd 0で開かれた同じファイルから読み取ることを意味します。たとえば、ファイルが通常のファイルの場合、fd 0は現在のファイルを指す場所ではなく、ファイルの先頭から読み取りを開始します。
GNUはawk
パス自体を処理し、/dev/stdin
それをstdinから読み取ることで処理するため、LinuxやCygwinでは特別な処理を行わない他のアプリケーションとは異なる動作をします。 Linux / Cygwinの動作gawk
(ここでは該当しない場合があります)が必要な場合、または///dev/stdin
停止/dev/./stdin
を使用gawk
して特殊なケースとして識別できます/dev/stdin
。または、Linux/Cygwin 固有の動作に依存する場合は、Linux を使用する方がよいでしょう。 /Cygwin 特定の/proc/self/fd/0
パス (/dev/stdin
実際にはこれらのシステムではシンボリックリンク)。