1

Я создаю сценарий bash, который должен копировать все файлы в ~/Development/ на другой компьютер в моей сети. Я включил его, чтобы смонтировать компьютер, если его там нет, но моя настоящая проблема - создание папок.

Я хочу сохранить файлы в /Volumes/Users/Public/InfiniteBackups/Development/ , поэтому я запускаю некоторые операторы if, чтобы проверить, существуют ли они.

#! /bin/bash


echo "Starting Backup of Development Files"
echo
say "Starting Backup of Development Files"



if [ -d "/Volumes/Users/Public/" ]; then
    # Control will enter here if $DIRECTORY exists.
echo "Location is there..."
echo

    # Start 
echo "Copying Files"
echo

if [ ! -d "/Volumes/Users/Public/InfiniteBackups/Development" ] ; then
  echo "/Volumes/Users/Public/InfiniteBackups/Development did not exist."
  say "Location did not exist, creating it."
  cd /Volumes/Users/Public/
  if [ ! -d "/Volumes/Users/Public/InfiniteBackups"]; then
  say "InfiniteBackups did not exist, creating it…"
  mkdir InfiniteBackups

  fi

  if [! -d "/Volumes/Users/Public/InfiniteBackups/Development"]; then
  cd InfiniteBackups
  mkdir Development
  fi


fi

cp -v -rip ~/Desktop/ /Volumes/Users/Public/InfiniteBackups/Development
echo "Files have finished transferring"
say "Files have finished transferring"

fi

Он скажет /Volumes /Users /Public / существует, и он скажет /Volumes /Users /Public / InfiniteBackups / Development не существует. Затем он проверяет, существует ли /Volumes /Users /Public / InfiniteBackups /, чего не должно быть. Затем предполагается сделать каталог. Однако вместо этого он действует так, как будто объем существует, хотя он явно не существует.

Почему это не работает Благодарю.

1 ответ1

1

Попробуйте добавить пробел между "и]. Вам не хватает этого в двух местах. Весь тест все время возвращает ненулевое число, потому что он выдает ошибку.

Я проверил свою теорию на Linux, она должна быть такой же для OS X ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .