Ответ 1
Изменить:
mkdir -p $deploydir
к
mkdir -p "$deployDir"
Как и большинство оболочек Unix (возможно, даже все из них), Bourne (Again) Shell (sh/ bash) учитывает регистр. Dir var называется deployDir
(смешанный случай) всюду, кроме команды mkdir
, где он называется deployDir
(все строчные буквы). Поскольку deployDir
(все строчные буквы) является рассмотренной отдельной переменной из deployDir
(смешанный регистр), а deplydir
(все строчные буквы) никогда не имел назначенного ему значения, значение deployDir
(все строчные буквы) пустая строка ("").
Без кавычек (mkdir $deploydir
) линия эффективно становится mkdir
(только команда без требуемого операнда), таким образом, ошибка mkdir: missing operand
.
С кавычками (mkdir "$deploydir"
) линия эффективно становится mkdir ""
(команда для создания каталога с недопустимым именем каталога пустой строки), таким образом, ошибка mkdir: cannot create directory
'.
Использование формы с кавычками (mkdir "$deploydir"
) рекомендуется в случае, если имя целевого каталога включает пробелы.