Perl、Ruby、PHPは標準入力を検出できます。
$ perl -e 'print -t ? "no stdin" : "stdin"'
no stdin
$ echo | perl -e 'print -t ? "no stdin" : "stdin"'
stdin
$ ruby -e 'puts $stdin.isatty ? "no stdin" : "stdin"'
no stdin
$ echo | ruby -e 'puts $stdin.isatty ? "no stdin" : "stdin"'
stdin
$ php -r 'print posix_isatty(STDIN) ? "no stdin" : "stdin";'
no stdin
$ echo | php -r 'print posix_isatty(STDIN) ? "no stdin" : "stdin";'
stdin
awkでこれを行う方法はありますか? ARGCを試しましたが、どちらの場合も同じです。
$ awk 'BEGIN {print ARGC == 1 ? "no stdin" : "stdin"}'
no stdin
$ echo | awk 'BEGIN {print ARGC == 1 ? "no stdin" : "stdin"}'
no stdin
ベストアンサー1
Perl、Ruby、phpの例はstdinが存在するかどうかをテストします。 awkメソッドはstdinを使用する必要があるかどうかをテストします。
system("tty")
これにはawkを使用できます。