Проблема может заключаться в том, что вы дали разрешение на каталог xyz
но не дал разрешения на запись и в / home
. Вам нужно будет изменить группу / home
на jenkins
и дать ей разрешение 775.
Однако самым чистым способом было бы использовать значения по умолчанию для каталогов Jenkins.
$ man grep
/ EXIT
EXIT STATUS
Normally the exit status is 0 if a line is selected, 1 if no lines were
selected, and 2 if an error occurred. However, if the -q or --quiet or
--silent is used and a line is selected, the exit status is 0 even if
an error occurred.
РЕДАКТИРОВАТЬ: надеюсь, это проясняет. Я знаю, что это сюрприз, если вы не искали такого поведения.
Это можно проверить, обратившись к секретному стандарту POSIX (серьезно, они слегка затемняют веб-страницу, надеясь, что больше людей купят печатные версии).
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html#tag_20_55_14
СТАТУС ВЫХОДА
Должны быть возвращены следующие значения выхода: 0 Выбрана одна или несколько строк. 1 Строки не выбраны. > 1 Произошла ошибка.
Хотя и без попытки определить, когда «произошла ошибка»:
if (uname -s | grep -i darwin >/dev/null); then
IS_DARWIN=1
fi
Вы можете просто использовать сопоставление с образцом Bash вот так.
[[ $(uname) = *[Dd]arwin* ]]; IS_DARWIN=$?
[[ $(uname) = *[Ss]un[Oo][Ss]* ]]; IS_SOLARIS=$?
Это расширенный тест, встроенный в Bash. Чтобы сократить количество обращений к uname, сохраните значение в переменной.
uname=$(uname)
[[ $uname = *[Dd]arwin* ]]; IS_DARWIN=$?
[[ $uname = *[Ss]un[Oo][Ss]* ]]; IS_SOLARIS=$?
Это можно упростить следующим образом:
uname=$(uname)
[[ $uname =~ [Dd]arwin ]]; IS_DARWIN=$?
[[ $uname =~ [Ss]un[Oo][Ss] ]]; IS_SOLARIS=$?
Или как:
uname=$(uname | tr [A-Z] [a-z])
[[ $uname =~ darwin ]]; IS_DARWIN=$?
[[ $uname =~ sunos ]]; IS_SOLARIS=$?
Или простейший
uname=$(uname)
[[ $uname =~ Darwin ]]; IS_DARWIN=$?
[[ $uname =~ SunOS ]]; IS_SOLARIS=$?
Пример запускается из Solaris (SunOS).
-bash-3.2$ uname SunOS -bash-3.2$ uname=$(uname | tr [A-Z] [a-z]) -bash-3.2$ [[ $uname =~ sunos ]]; IS_SOLARIS=$?; echo $IS_SOLARIS 0 -bash-3.2$ uname SunOS -bash-3.2$ uname=$(uname) -bash-3.2$ [[ $uname =~ [Ss]un[Oo][Ss] ]]; IS_SOLARIS=$?; echo $IS_SOLARIS 0 -bash-3.2$ uname SunOS -bash-3.2$ uname=$(uname) -bash-3.2$ [[ $uname =~ SunOS ]]; IS_SOLARIS=$?; echo $IS_SOLARIS 0 -bash-3.2$ -bash-3.2$ uname SunOS -bash-3.2$ [[ $(uname) =~ SunOS ]]; IS_SOLARIS=$?; echo $IS_SOLARIS 0 -bash-3.2$