我在 docker 容器中运行 mariadb,并尝试通过 cron 和 bash 脚本对其进行备份。我无法弄清楚 ' 和 " 的正确语法
这就是我想要做的,当我将它插入我的终端时它就可以工作:
docker exec mariadb sh -c 'exec mysqldump --single-transaction -u myDb_user -p"secret" myDb' > tmp.sql
这是导致我的 bash 脚本中出现错误的代码行(应该执行与上面一行完全相同的操作,但在 bash 脚本中并带有一些变量(需要备份多个内容):
#!/bin/bash
...
docker exec mariadb sh -c 'exec mysqldump --single-transaction -u ${dbUser} -p"${dbPassword}" ${database}' > "${backupdir}/${fileNameBackupDb}"
我运行 bash 脚本时的输出(通过 sudo ./backup.sh)
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
答案1
我明白了,这是正确的语法:
docker exec mariadb sh -c "exec mysqldump --single-transaction -u ${dbUser} -p'"${dbPassword}"' ${database}" > "${backupdir}/${fileNameBackupDb}"