Я создаю службу для поиска, используя автомат. Сервис имеет только один пункт: «запустить сценарий оболочки» и сценарий таков:Этот скрипт работает от Bash, но не от Automator
currentDirectory=$(pwd)
for f in "[email protected]"; do
DIRNAME="$(dirname "$f")"
export width=$(mdls "$f" | grep kMDItemPixelWidth | tail -n1 | cut -d= -f2)
export height=$(mdls "$f" | grep kMDItemPixelHeight | tail -n1 | cut -d= -f2)
oneWidth=$((width/3))
oneHeight=$((height/3))
twoWidth=$((umWidth * 2))
twoHeight=$((umHeight * 2))
IFS='@3x' read -ra NAMES <<< "$f" #Convert string to array
basename=${NAMES[0]}
extension="${f##*.}"
fullnameOne=${NAMES[0]}.$extension
fullnameTwo=${NAMES[0]}@2x.$extension
sips -z "$oneWidth" "$oneHeight" "$f" --out "$DIRNAME"/"$fullnameOne"
sips -z "$twoWidth" "$twoHeight" "$f" --out "$DIRNAME"/"$fullnameTwo"
done
Идея заключается в следующем:
- я правая кнопка мыши на куче изображений, имена которых содержат
@3x
, как [email protected], [email protected] и т. д. - Я хочу, чтобы скрипт генерировал
@2x
и@1x
версии файлов, переименовывая их [email protected], [email protected], file.png и ball .jpg соответственно. - Сценарий должен уважать формат. Если файл PNG, выход должен быть PNG и тот же для JPG.
Этот сценарий, который вы видите выше, работает от терминала, но не от автомата. На автомате сценарий генерирует только один файл с именем Users
.
Что не так?
Я скучаю по [shebang] (https://en.wikipedia.org/wiki/Shebang_%28Unix%29). – Cyrus
'IFS' не работает так, как вы думаете. Проверьте значение '$ f' по сравнению с результирующим значением' $ basename'. – chepner