Самым простым решением было бы запустить каждое из двух фоновых заданий и перенаправить их вывод в файлы:
utility1 >utility1.out 2>utility1.err &
utility2 >utility2.out 2>utility2.err &
Это дает дополнительное преимущество, заключающееся в том, что терминал не засоряется выводом.
Очевидно, что вы можете перенаправить и поток ошибок, и поток вывода в один и тот же файл.:
utility1 >utility1.out 2>&1 &
utility2 >utility2.out 2>&1 &
Вы также можете использоватьtmux
:
tmux new "utility1" ';' split "utility2"
tmux
выйдет, как только будут завершены все команды. Чтобы избежать этого, измените "utility"
на "utility;read"
. Это заставит панель оставаться открытой, пока вы не нажмете Enter .
Perhaps I am misinterpreting, but this language seems to disallow the syntax used in the above example.
В этом примере предполагается, что GNU bc добавляет свои собственные расширения к языку bc. Как описано в его руководстве , вы должны использовать переключатель -s
, чтобы заставить его обрабатывать точный язык POSIX bc, или переключатель -w
, если вы хотите, чтобы он предупреждал о расширениях :
$ echo '1.2 > 0.4' | bc -s
(standard_in) 2: Error: comparison in expression
$ echo '1.2 > 0.4' | bc -w
(standard_in) 2: (Warning) comparison in expression
1
$ echo '1.2 > 0.4' | bc
1
If so, how should I rewrite my example?
$ printf 'if(%s > %s){a=1};a\n' 1.2 0.4 | bc -s
1
спасибо @icarus за более короткую и приятную для глаз версию.