У вас может возникнуть ошибка, связанная с v-синхронизацией. Если вы используете единство, попробуйте установить ccsm и поиграть с опцией v-sync в настройках opengl.
Чтобы получить $SECONDS в формате HH: MM: SS, вам нужно будет выполнить некоторую (целую) математику:
hrs=$(( SECONDS/3600 )); mins=$(( (SECONDS-hrs*3600)/60)); secs=$(( SECONDS-hrs*3600-mins*60 ))
printf 'Time spent: %02d:%02d:%02d\n' $hrs $mins $secs
Time spent: 431:48:03
Чтобы получить $SECONDS в формате HH: MM: SS, вам нужно будет выполнить некоторую (целую) математику:
hrs=$(( SECONDS/3600 )); mins=$(( (SECONDS-hrs*3600)/60)); secs=$(( SECONDS-hrs*3600-mins*60 ))
printf 'Time spent: %02d:%02d:%02d\n' $hrs $mins $secs
Time spent: 431:48:03
Чтобы получить $SECONDS в формате HH: MM: SS, вам нужно будет выполнить некоторую (целую) математику:
hrs=$(( SECONDS/3600 )); mins=$(( (SECONDS-hrs*3600)/60)); secs=$(( SECONDS-hrs*3600-mins*60 ))
printf 'Time spent: %02d:%02d:%02d\n' $hrs $mins $secs
Time spent: 431:48:03
Вы указали внутреннюю переменную bash SECONDS (которая выводит количество секунд, прошедших с момента вызова текущего экземпляра оболочки) и сохранила значение в качестве другой переменной time_spent. Теперь, после этого каждый раз, когда вы проверяете значение переменной time_spent, вы получите то же значение - сохраненное в момент расширения SECONDS.
Чтобы динамически получить , вы должны ссылаться на $SECONDS напрямую, а не на использование промежуточной переменной:
echo "Time: $SECONDS"
Если вы настаиваете на использовании промежуточной переменной, обязательно выполняйте расширение $SECONDS каждый раз. 2]
Что касается значения SECONDS, являющегося 0, вы можете легко воспроизвести это:
% bash -c 'echo $SECONDS'
0
Точка: когда вы вычисляете значение, это еще не секунда, поэтому значение будет 0, правильно.
Вот быстрый, который дает часы минут и секунд с момента открытия оболочки:
~$ cat how_long_open
#!/bin/bash
time=$SECONDS
printf '%dh:%dm:%ds\n' $(($time/3600)) $(($time%3600/60)) $(($time%60))
Поскольку сценарии запускаются в подоболочке, лучший способ получить выход - вместо этого использовать исходный скрипт
Примеры:
Без поиска скрипта
~$ ./how_long_open
0h:0m:0s
Без поиска сценария
[ f3]Надеюсь, это поможет!
Если вы уверены, что $SECONDS будет меньше 1 дня (т. е. 86400 секунд), то GNU core-utils date выполняет довольно хорошую работу с необходимым форматированием:
$ date -ud "@$SECONDS" "+Time elapsed: %H:%M:%S"
Time elapsed: 00:32:05
$
Если вы уверены, что $SECONDS будет меньше 1 дня (т. е. 86400 секунд), то GNU core-utils date выполняет довольно хорошую работу с необходимым форматированием:
$ date -ud "@$SECONDS" "+Time elapsed: %H:%M:%S"
Time elapsed: 00:32:05
$
Вы указали внутреннюю переменную bash SECONDS (которая выводит количество секунд, прошедших с момента вызова текущего экземпляра оболочки) и сохранила значение в качестве другой переменной time_spent. Теперь, после этого каждый раз, когда вы проверяете значение переменной time_spent, вы получите то же значение - сохраненное в момент расширения SECONDS.
Чтобы динамически получить SECONDS, вы должны ссылаться на $SECONDS напрямую, а не на использование промежуточной переменной:
echo "Time: $SECONDS"
Если вы настаиваете на использовании промежуточной переменной, обязательно выполняйте расширение $SECONDS каждый раз.
Что касается значения SECONDS, являющегося 0, вы можете легко воспроизвести это:
% bash -c 'echo $SECONDS'
0
Точка: когда вы вычисляете значение, это еще не секунда, поэтому значение будет 0, правильно.
Вот быстрый, который дает часы минут и секунд с момента открытия оболочки:
~$ cat how_long_open
#!/bin/bash
time=$SECONDS
printf '%dh:%dm:%ds\n' $(($time/3600)) $(($time%3600/60)) $(($time%60))
Поскольку сценарии запускаются в подоболочке, лучший способ получить выход - вместо этого использовать исходный скрипт
Примеры:
Без поиска скрипта
~$ ./how_long_open
0h:0m:0s
Без поиска сценария
~$ source ./how_long_open
1h:24m:40s
Надеюсь, это поможет!
Если вы уверены, что $SECONDS будет меньше 1 дня (т. е. 86400 секунд), то GNU core-utils date выполняет довольно хорошую работу с необходимым форматированием:
$ date -ud "@$SECONDS" "+Time elapsed: %H:%M:%S"
Time elapsed: 00:32:05
$
Вы указали внутреннюю переменную bash SECONDS (которая выводит количество секунд, прошедших с момента вызова текущего экземпляра оболочки) и сохранила значение в качестве другой переменной time_spent. Теперь, после этого каждый раз, когда вы проверяете значение переменной time_spent, вы получите то же значение - сохраненное в момент расширения SECONDS.
Чтобы динамически получить SECONDS, вы должны ссылаться на $SECONDS напрямую, а не на использование промежуточной переменной:
echo "Time: $SECONDS"
Если вы настаиваете на использовании промежуточной переменной, обязательно выполняйте расширение $SECONDS каждый раз.
Что касается значения SECONDS, являющегося 0, вы можете легко воспроизвести это:
% bash -c 'echo $SECONDS'
0
Точка: когда вы вычисляете значение, это еще не секунда, поэтому значение будет 0, правильно.
Вот быстрый, который дает часы минут и секунд с момента открытия оболочки:
~$ cat how_long_open
#!/bin/bash
time=$SECONDS
printf '%dh:%dm:%ds\n' $(($time/3600)) $(($time%3600/60)) $(($time%60))
Поскольку сценарии запускаются в подоболочке, лучший способ получить выход - вместо этого использовать исходный скрипт
Примеры:
Без поиска скрипта
~$ ./how_long_open
0h:0m:0s
Без поиска сценария
~$ source ./how_long_open
1h:24m:40s
Надеюсь, это поможет!