со страницы руководства watch
:
Обратите внимание, что команда дается "sh -c", что означает, что вам может потребоваться использовать дополнительные кавычки, чтобы получить желаемый эффект.
sh -c
также не поддерживает подстановку процессов, синтаксис, который вы используете здесь как >()
.
К счастью, этот синтаксис на самом деле не нужен для того, что вы делаете:
watch -n.1 'out=$(squeue -u "$USER"); echo "$out"; { echo "$out" | wc -l; }'
... или, если вы действительно хотите использовать свой исходный код даже при значительном снижении производительности (начиная не с одной, а двух новых оболочек каждую десятую секунды - - сначала sh
, а затем bash
):
bash_cmd() { squeue -u "$USER" | tee >(wc -l); } # create a function
export -f bash_cmd # export function to the environment
watch -n.1 'bash -c bash_cmd' # call function from bash started from sh started by watch