Если программа Awk имеет «средний» или END
блок, то считывается ввод. Мы можем противодействовать этому, предоставляя нулевой ввод:
$ cat prog.awk
1
END {
print "fin"
}
$ awk -f prog.awk /dev/null
fin
Если мы хотим, чтобы это было по умолчанию, мы можем добавить блок в «help.awk»:
BEGIN {
if (ARGC == 1 && !system("[ -t 0 ]")) {
ARGV[ARGC++] = "/dev/null"
}
}
Однако это создает важное изменение; Awk не будет читать с терминала, если вы добавляете тире:
awk -f help.awk -f prog.awk -
или изменить "prog.awk":
getline < "-"
Пример ввода показаний:
$ cat prog.awk
/4/ {
really_exit()
}
1
END {
print "fin"
}
$ seq 10 | awk -f help.awk -f prog.awk
1
2
3
Пример ввода без чтения:
$ cat prog.awk
BEGIN {
print "start"
really_exit()
}
END {
print "fin"
}
$ awk -f help.awk -f prog.awk
start
Вы можете просто запустить что-то подобное в каждом окне:
while :; do ssh $i tmux a; sleep 1; done
Или напишите скрипт, который периодически проверяет окна и использует respawn-pane
или respawn-window
для их перезапуска при необходимости.