Рассмотрим следующий сценарий:
TODAY=$(date -j +"%j # %Y.%m.%d # %H.%M.%S")
LAUNCHPAD_LOCATION=$(getconf DARWIN_USER_DIR)com.apple.dock.launchpad
LAUNCHPAD_DESTINATION = "/Users/tobias/[DEVELOPMENT # ROOT]/LOCAL/PROJECTS/sh # TK-Launchpad.DB/"$TODAY""
mkdir "$TODAY"
mkdir "$LAUNCHPAD_DESTINATION"
cp -Rv $LAUNCHPAD_LOCATION $LAUNCHPAD_DESTINATION
Что не так с этим сценарием? Он должен скопировать папку Launchpad.db на недавнюю дату, отформатированную в $TODAY, но этого не происходит. И да, мне нужны места для дальнейшей обработки файлов и эстетических целей.
Я попытался скопировать файл launchpad.db во временную папку без пробелов и скобок, а затем переместить результат в новую папку с пробелами и скобками.
TODAY_1=$(date -j +"%j_#_%Y.%m.%d_#_%H.%M.%S")
TODAY_2=$(date -j +"%j # %Y.%m.%d # %H.%M.%S")
LAUNCHPAD_LOCATION=$(getconf DARWIN_USER_DIR)com.apple.dock.launchpad
LAUNCHPAD_DESTINATION_1 = "/Users/tobias/DEVELOPMENT_#_ROOT/LOCAL/PROJECTS/sh_#_TK-Launchpad.DB/"$TODAY_1""
LAUNCHPAD_DESTINATION_2 = "/Users/tobias/[DEVELOPMENT # ROOT]/LOCAL/PROJECTS/sh # TK-Launchpad.DB/"$TODAY_2""
cp -Rv $LAUNCHPAD_LOCATION $LAUNCHPAD_DESTINATION_1
mv -v "$LAUNCHPAD_DESTINATION_1" "$LAUNCHPAD_DESTINATION_2"
Теперь я почти получаю результат, но теперь у меня проблема с этой надоедливой подпапкой, и я не могу избавиться от нее.
Кстати: есть ли более простое решение и, возможно, рабочее?
🤔 А знаете ли вы, что...
Shell позволяет создавать и использовать сценарии (скрипты) для автоматизации задач.
Основная причина этого заключается в том, что он неправильно обрабатывает пробелы и специальные символы, такие как скобки, в пути к файлу. Помните, что всякий раз, когда вы используете переменную или путь, содержащие пробелы, всегда старайтесь заключать их в двойные кавычки, чтобы гарантировать, что оболочка обрабатывает их как один объект. Попробуйте это:
TODAY=$(date +"%j # %Y.%m.%d # %H.%M.%S")
LAUNCHPAD_LOCATION = "$(getconf DARWIN_USER_DIR)/com.apple.dock.launchpad"
LAUNCHPAD_DESTINATION = "/Users/tobias/[DEVELOPMENT # ROOT]/LOCAL/PROJECTS/sh # TK-Launchpad.DB/$TODAY"
mkdir -p "$LAUNCHPAD_DESTINATION"
cp -Rv "$LAUNCHPAD_LOCATION" "$LAUNCHPAD_DESTINATION"
Надеюсь, теперь он разрешит ваш вопрос. В случае, если вы обнаружите какие-либо сомнения, спросите еще раз.