Кто-нибудь знает, почему этот скрипт не сработает?Замена переменных в sed
файла: дб
#!/usr/local/bin/bash
if [ -z "$1" ]; then
echo "Must specify source DB environment"
echo "One of s (for Staging), p (for Production)"
exit
elif [ "$1" == "s" -o "$1" == "p" ]; then
if [ "$1" == "s" ]; then
echo "Connecting to Staging DB"
URL='staging\.example\.com'
PATH='/var/www/vhosts/staging\.example\.com'
else
echo "Connecting to Production DB"
URL='example\.com'
PATH='/var/www/vhosts/example\.com'
fi
ssh host "mysqldump -udbuser -pdbpass staging | gzip -9" | gzip -d | sed -e "s+$URL+example\.local+g" -e "s+$PATH+/Library/WebServer/Documents/example+g" | mysql -uroot -proot example_local
fi
я получаю следующие ошибки:
./db: line 14: ssh: command not found
./db: line 14: gzip: command not found
./db: line 14: sed: command not found
./db: line 14: mysql: command not found
Примечания:
- Разрешения на
./db
являются 777. host
сохраняется в.ssh/config
. Я могу запуститьssh host
и попасть в удаленный компьютер без проблем.- учетные данные mysql верны как для удаленных, так и для локальных
- Я могу запустить этот окончательный ssh однострочный в командной строке. Я почти уверен, что это переменная замена в sed, которая все испортила.
Спасибо!
Извините, я должен был добавить, что я бегу как мой ... Я не знаю, как вы это называете ... «Домашний» пользователь на OSX. @anubhava правильно, что я переписывал свою систему $ PATH с использованием пути сервера для скрипта. –