Другие уже упомянули это $#
количество параметров командной строки, таким образом, я проигнорирую ту часть Вашего вопроса.
Данный cmd1 && cmd2
, оболочка сначала выполняется cmd1
. Если cmd1
сбои, все сбои выражения. Если cmd1
успешно выполняется, оболочка продолжает выполняться cmd2
. Все выражение успешно выполняется если оба cmd1
и cmd2
успешно выполниться. Так, &&
оператор является булевской переменной замыкания накоротко И примененный к командам оболочки. Использование этого оператора может быть заменено
if cmd1
then
cmd2
fi
Данный cmd1 || cmd2
, оболочка сначала выполняется cmd1
. Если это успешно выполняется, все выражение успешно выполняется. Иначе оболочка выполняется cmd2
и успешность или неуспешность выражения определяется cmd2
. Короче говоря, это - булевская переменная замыкания накоротко ИЛИ примененный к командам оболочки. Можно заменить эту форму
if ! cmd1
then
cmd2
fi
Я тщательно использовал фразы, за которыми следуют / успешно выполняется и отказавший / сбои выше. Успех, для команд оболочки, определяется как статус выхода процесса нуля. Отказ является любым ненулевым состоянием. Однако пытаясь понять &&
и ||
операторы с точки зрения статусов выхода, по крайней мере, мне, путая, так как Вы заканчиваете со странным видом инвертированной логики.
Я думаю, что это берет Ваш + x
как спецификатор часового пояса (например, рассмотреть 2013-04-25 19:52:36 +4
допустимая метка времени, в в часовом поясе 4 часа перед UTC).
Это затем видит слово 'минуты' и рассматривает его как синоним минуты, таким образом давая Вам одну минуту спустя.
Если Вы вставляете явный спецификатор часового пояса, он работает:
anthony@Zia:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC" +"%s"
0
anthony@Zia:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + 0 minutes" +"%s"
0
anthony@Zia:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + -1 minutes" +"%s"
-60
anthony@Zia:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + 1 minutes" +"%s"
60
Отметьте UTC
после поля секунд. Можно также вставить секунду +0
:
anthony@Zia:~$ TZ=utc date -d "1970-01-01 00:00:00 +0 + -1 minutes" +"%s"
-60
... но по крайней мере лично, это намного более трудно считать.
Или можно поместить a Z
после секунд, и т.д. Вам на самом деле не нужно TZ
переменная среды, которая будет установлена на UTC в вышеупомянутых примерах.
date -d '1970-1-1 0:0:0 1 minute'
иdate -d '1970-1-1 0:0:0 1 minute ago'
– Stéphane Chazelas 25.04.2013, 21:01date
? (например, сокращение в течение эпохи) – a3nm 28.04.2013, 15:33