Понял:
auth_request_set $myheader $upstream_http_x_costumheader;
add_header costum $myheader;
/Applications/Adobe\ Photoshop\ CC\ *
перечисляет Adobe Photoshop CC
нужные вам каталоги. Но /Applications/Adobe\ Photoshop\ CC\ */Dummy-test/Test
перечисляет существующиеTest
каталоги. Передача подстановочных знаков команде, которая создаст данные файлы, не может работать. Вам нужно отделить инструкцию по перечислению существующих файлов от инструкции по созданию новых файлов.
Во второй попытке удалите пробелы вокруг знака равенства. В присваивании не может быть пробелов по обе стороны от знака равенства. И опять же, если Dummy-test
уже не существует, INSTALL_DIRS
ничего не даст.
#!/bin/bash
shopt -s nullglob
photoshop_dirs=(/Applications/Adobe\ Photoshop\ СС\ *)
if ((${#photoshop_dirs[@]} == 0)); then
echo >&2 "$0: fatal error: Adobe Photoshop CC is not installed."
exit 1
fi
install_dir=${photoshop_dirs[$((${#photoshop_dirs[@]}-1))]}/Dummy-test/Test
mkdir -p "$install_dir"
mv /private/tmp/com.example.test/PSD "$install_dir/"
Пояснения:
shopt -s nullglob
приводит к тому, что массив становится пустым, если шаблон подстановочного знака ничему не соответствует. По умолчанию шаблоны подстановочных знаков не изменяются, если они ничему не соответствуют, поэтому массив будет содержать один элемент, который является неизмененным шаблоном с *
в нем. Если вас интересует запуск скриптов только в macOS и в системах, которыми вы управляете, я рекомендую использовать zsh, а не bash. Zsh лучше и менее подвержен ошибкам -. Преимущество bash в том, что он устанавливается по умолчанию в Linux и, как правило, в *BSD, в то время как zsh легко устанавливается, но обычно не устанавливается по умолчанию. В macOS bash — очень старая версия, тогда как zsh устанавливается по умолчанию и обновляется с -до -.
#!/bin/zsh
setopt null_glob
photoshop_dirs=(/Applications/Adobe\ Photoshop\ СС\ *)
if (($#photoshop_dirs == 0)); then
echo >&2 "$0: fatal error: Adobe Photoshop CC is not installed."
exit 1
fi
install_dir=${photoshop_dirs[-1]}/Dummy-test/Test
mkdir -p $install_dir
mv /private/tmp/com.example.test/PSD $install_dir/