Это сводит меня с ума. Любая помощь приветствуется!
$MYSQLDUMP --login-path=$HOST $DATABASE > "$BACKUP_DIR/${HOST}__${DATABASE}__${NOW}.sql";
$MYSQLDUMP
(внутри скрипта) имеет действительный полный путь$NOW
устанавливается в начале сценария, а не здесь ... так что время не меняется для нас или что-то ещеdos2unix
чтобы не было странных персонажей. Я на Mac, но эй ... почему бы и нет>
лайк \>
, который вместо этого производит mysqldump: Couldn't find table: ">"
ошибкаЭто сводит меня с ума. Не уверен, что мне здесь не хватает? Мы просто направляем результаты, и мне кажется, что я упускаю из виду нечто смехотворно очевидное.
ОБНОВИТЬ
Здесь добавлены еще несколько тестов для отладки и помощи.
vrb "\$BACKUP_DIR: $BACKUP_DIR"
vrb "whoami $(whoami)"
vrb "ls -ld \"$BACKUP_DIR/\" $(ls -ld \"$BACKUP_DIR/\")"
vrb "absolute path of user's home dir: $(cd ~/; pwd)"
vrb "absolute path of \$BACKUP_DIR: $(cd $BACKUP_DIR/; pwd)"
... производит ...
20160713T210808Z: $BACKUP_DIR: ~/www/__MYSQL/backup
20160713T210808Z: whoami william
ls: "~/www/__MYSQL/backup/": No such file or directory
20160713T210808Z: ls -ld "~/www/__MYSQL/backup/"
20160713T210808Z: absolute path of user's home dir: /Users/william
./mygration.sh: line 383: cd: ~/www/__MYSQL/backup/: No such file or directory
20160713T210808Z: absolute path of $BACKUP_DIR: >> ERROR: 1
vrb
это просто еще одна функция, которая обрабатывает подробный вывод в скрипте, поэтому не беспокойтесь об этом. Это только для вывода отладочной информации.
Если я вручную перечислю содержимое в том же терминале, чтобы ~/www/__MYSQL/backup/
, Я вижу следующее:
$ ls -la ~/www/__MYSQL/backup/
total 0
drwxr-xr-x 2 william staff 68 Jul 13 20:55 .
drwxr-xr-x 6 william staff 204 Jul 13 20:55 ..
Это странно. Почти как у Bash нет доступа, но у моего обычного пользователя (тот, кто запускает скрипт bash в первую очередь) есть.
ЕЩЕ ОДИН ОБНОВЛЕНИЕ
echo $(whoami);
echo ~;
exit;
... производит ...
william
/Users/william
Проблема в том, что вы поместили тильду в двойные кавычки. Когда вы это сделаете, это не расширен до пути к вашему домашнему каталогу.
Рассматривать:
MacBook-Pro:~ error$ cat x.sh
#!/bin/sh
echo ~
echo "~"
ls ~
ls "~"
MacBook-Pro:~ error$ ./x.sh
/Users/error
~
Calibre Library Downloads Music bin
Desktop Library Pictures synergy
Documents Movies Public x.sh
ls: ~: No such file or directory
MacBook-Pro:~ error$
Если вы хотите и дальше использовать двойные кавычки, используйте $HOME
переменная вместо тильды.
MacBook-Pro:~ error$ echo $HOME
/Users/error
MacBook-Pro:~ error$ echo "$HOME"
/Users/error
MacBook-Pro:~ error$