Независимо от того, что блокируется в slowprocess.sh
мог быть фон так, чтобы он мог продолжиться даже после тайм-аута.
Также Вы смогли использовать a signal
от timeout
назад к Вашему main.sh
. См. страницу справочника для timeout
.
выборка от timeout
информационная страница
`-s SIGNAL'
`--signal=SIGNAL'
Send this SIGNAL to COMMAND on timeout, rather than the default
`TERM' signal. SIGNAL may be a name like `HUP' or a number. Also
see *Note Signal specifications::.
Необходимо было бы захватить для этого сигнала в main.sh
.
Также timeout
возвращает различные состояния для различных типов отказов. Вы смогли использовать их также:
Exit status:
124 if COMMAND times out
125 if `timeout' itself fails
126 if COMMAND is found but cannot be invoked
127 if COMMAND cannot be found
the exit status of COMMAND otherwise
Они присутствуют в переменной $?
, после timeout ...
выполнения строки.
Python, кажется, предпочитает:
$ echo 'print(round(' "5+50*3/20 + (19*2)/7" ', 3))' | python3
17.929
Вы можете упростить выражение из вашего комментария, используя конец "here string", удаляя оба echo
s:
printf "%.3f\n" "$(bc -l <<< "$var")"
или даже
printf "%.3f\n" "$(bc -l <<< "5+50*3/20 + (19*2)/7")"
Предполагая, что переменная $ EXP получает значение 17.92857142857143 в вашем скрипте оболочки, используйте следующую строку к раунду и распечатать ее:
Python2 -C 'Print Round (' $ Exp ', 3)'