목표 :VVV 특정 데이터베이스에서 DB 백업을 기본적으로 실행하지 않으려 고합니다.Bash : 예기치 않은 토큰 구문 오류를 해결할 수 없습니다.
내가 붙어있는 곳 : bash 스크립트에서 줄 바꿈을 사용할 때도 계속 syntax error near unexpected token `done'
이 계속 나타납니다.
걸리는 단계 : 나는 또한 두 bash 스크립트에서 LF 라인 결말을 확인했지만 동일한 오류가 발생합니다.
파일 : vagrant_halt_custom
#!/bin/bash
#
# This script is run whenever `vagrant halt` is used to power off
# the virtual machine. To customize this behavior, include a file
# in your local VVV/config/homebin directory: vagrant_halt_custom
#
# Look for a custom trigger file. If this exists, we'll assume that
# all trigger actions should be handled by this custom script. If
# it does not exist, then we'll handle some basic tasks.
db_backup_custom
파일 : db_backup_custom
#!/bin/bash
#
# Create individual SQL files for each database. These files
# are imported automatically during an initial provision if
# the databases exist per the import-sql.sh process.
mysql -e 'show databases' | \
grep -v -F "information_schema" | \
grep -v -F "performance_schema" | \
grep -v -F "mysql" | \
grep -v -F "test" | \
grep -v -F "Database" | \
while read dbname; do if [ "$dbname" == "mydb" ]; then echo "Database $dbname skipped." && continue fi; mysqldump -uroot "$dbname" > /srv/database/backups/"$dbnme".sql && echo "Database $dbname backed up..."; done
오류
==> default: Running triggers before halt...
/home/vagrant/bin/db_backup_custom: line 12: syntax error near unexpected token `done'
/home/vagrant/bin/db_backup_custom: line 12: `while read dbname; do if [ "$dbname" == "mydb" ]; then echo "Database $dbname skipped." && continue fi; mysqldump -uroot "$dbname" > /srv/database/backups/"$dbnme".sql && echo "Database $dbname backed up..."; done'
Connection to 127.0.0.1 closed.
==> default: Attempting graceful shutdown of VM...
==> default: [vagrant-hostsupdater] Removing hosts
약간 수정 된 버전의 답을 시도했지만 도움이되었습니다. 내가 코멘트에 게시 할 수 없으므로 별도의 답변으로 게시하십시오. 그러나 대단히 감사합니다, 당신은 저의 하루를 구했습니다! –
"코드를 더 많은 줄로 포맷하지 않은 이유는 무엇입니까?" - 코드가 VVV repo에 속하며 그 방식으로 형식이 지정되었습니다. 그래서 나는 그들의 기준을 고수하려고 노력했다. –