Ссылка Лиама выглядит великолепно, но также проверить pandas.Timedelta
- похоже, что она прекрасно сочетается с дельтами времени NumPy и Python.
https://pandas.pydata.org/pandas- docs / stable / timedeltas.html
pd.date_range('2014-01-01', periods=10) + pd.Timedelta(days=1)
Если вы используете set -e
, вы должны быть осторожны как внутри, так и снаружи.
С помощью set -e
оболочка в основном переводит
foo || bar
в
(set +e; foo) || bar
именно потому, что она должна видеть код выхода с конца функции.
Исправление должно быть таким же осторожным в определении функции.
# Renamed the function to as to avoid shadowing the test built-in
nst () {
false || return
echo "This should not be printed!"
}
Взгляните на справочную страницу bash. В нем говорится о set -e
(выделено мной):
Выйти немедленно, если конвейер (который может состоять из одной простой команды), список или составная команда (см. ОБРАЗЕЦ ОБОЛОЧКИ выше) , выходит с ненулевым статусом. Оболочка не завершает работу, если команда, которая завершается с ошибкой, является частью части списка команд, следующих сразу за ключевым словом некоторое время или до, часть теста, следующей за зарезервированными словами if или elif, часть любой выполненной команды в & amp; & amp; или || список, за исключением команды, следующей за последней & amp; & amp; или || , любая команда в конвейере, кроме последней, или если возвращаемое значение команды инвертируется с помощью!. Если составная команда, отличная от подоболочки, возвращает ненулевое состояние из-за того, что команда завершилась неудачно, а -e игнорировалась, оболочка не завершится. Ловушка ERR, если установлена, выполняется до выхода из оболочки. Этот параметр применяется к среде оболочки и к каждой среде подоболочки отдельно (см. Выше КОМАНДА ИСПОЛНЕНИЯ ИСПОЛНЕНИЯ) и может привести к выходу подоболочек после выполнения всех команд в подоболочке.
Если составная команда или функция оболочки выполняется в контексте, где -e игнорируется, ни одна из команд, выполняемых в составной команде или теле функции, не будет затронута параметром -e, даже если установлен -e и Команда возвращает статус ошибки. Если составная команда или функция оболочки задает -e при выполнении в контексте, где -e игнорируется, эта настройка не будет иметь никакого эффекта до тех пор, пока составная команда или команда, содержащая вызов функции, не завершится.
blockquote>В следующем примере второй вызов функции
test
завершит выполнение сценария, так как это последняя команда в списке||
.#!/bin/bash set -e test() { false echo "This should not be printed!" } test || echo "test failed" false || test echo "Will not be printed"