Я обновляю старый сценарий оболочки, чтобы работать с новой конфигурацией, и я относительно новичок в сценариях оболочки, но для большинства сценариев я вообще был в порядке. Тем не менее, мне трудно понять, что делает следующая строка. Эта конкретная строка вызывается из другого запущенного скрипта и запускается на машинах типа UNIX, хотя я не уверен, насколько это уместно.Логический и между каталогами в сценарии оболочки
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
Мой вопрос заключается в основном то, что каталог это на самом деле указывает на относительно каталога, он называется в и хранится в? Также, что это такое & & делать там? Кажется очень странным видеть, что логический оператор состоит из двух каталогов, но опять же я довольно новичок в сценариях оболочки.
О воах. Я даже не думал о том, что такое короткое замыкание. Это потрясающе! –
Ну почти: если дир существует, он движется к нему. В противном случае он получает пустые данные. Надеюсь, это ясно из моего редактирования. – fedorqui
+1, но я хочу обратиться к «выполненному, если первая часть верна»: как говорится в [руководстве] (http://www.gnu.org/software/bash/manual/bashref.html#Lists) command1 && command2 ":" command2 выполняется, если и только в том случае, если command1 возвращает статус выхода из нуля. " Таким образом, речь идет не только об истинном или ложном, это об успехе или неудаче. Команда cd может выйти из строя (если указанный каталог не существует), и в этом случае не печатайте текущий рабочий каталог. –