Проблема с разрешением

Вы можете использовать простую функцию для удаленияlocal-ness из переменной через unset+set:

function return_local()
{
  unset $1 # must be local
  eval "$1=\"\$2\""
}

Мы должны использовать evalвместо declare, потому что он создает либо локальную, либо экспортируемую переменную, когда нам нужно создать не локальную не экспортируемую переменную.

function test()
{
  local my_return_value=123
  #...
  return_local my_return_value "$my_return_value"
}

Инструкция unsetудаляет самую внутреннюю localпеременную, поэтому вам нужно писать return_localв каждой функции, которая хочет вернуть локальную переменную. Таким образом, return_localможно использовать в контекстах вложенных вызовов.

И нет необходимости использовать оператор $(...), пока он создает отдельный процесс, который стоит производительности в bash под Windows, потому что создание процесса там недешево.

0
07.12.2019, 19:39
1 ответ

вы должны использовать -R или --рекурсивные, как предложено выше. но также вам может понадобиться изменить владение файлами/каталогами с помощью chown (и -R или --recursive )перед изменением разрешений, затем измените разрешения. также проверьте команду setacl/getacl для изменения разрешений.

-1
28.01.2020, 05:04

Теги

Похожие вопросы