0

我正在尝试执行一个命令,但是该命令太长了,而且太长而无法仅从命令行运行。所以我试图把它放在一个shell脚本中,然后我可以运行shell脚本,它会执行非常长的unix命令。

显然我需要标题,然后是命令。我需要添加什么语法才能使这个 shell 脚本起作用?

 #!/bin/sh
./mysqldump --defaults-file=../../conf/mysql.conf --single-transaction \
   --ignore-table=st.Event --ignore-table=st.TransferStatus  \
   --ignore-table=st.TransferConfiguration --ignore-table=st.TransferData \ 
   --ignore-table=st.logging_event --ignore-table=st.logging_event_exception \ 
   --ignore-table=st.logging_event_property \
   -u root -pXXXXXXXX st > /tmp/database_backup.sql
4

2 回答 2

0

就语法而言,你的shell脚本对我来说似乎很好......

我要注意的是脚本中的所有相对路径,更具体地说./mysqldump../../conf/mysql.conf. 使用相对路径要求脚本始终从文件系统中的特定目录执行。使用绝对路径使脚本更安全,尽管它确实将其绑定到特定位置。

如果您坚持使用相对路径,您可以将脚本放在应该运行它的目录中,然后使用绝对路径调用它。

要运行脚本,您应该使用chmod +x(或其某些变体)使其文件可执行,或者将其作为参数传递给sh例如sh /path/to/my/script.sh.

如果您提到当前脚本的确切问题是什么,我们可能会提供更多帮助...

于 2012-12-28T19:38:41.390 回答
0

我认为您不需要./,而且您可以为该命令创建别名 (http://linuxreviews.org/quicktips/alias/)。一旦你准备好命令chmod +x,不要忘记文件。.sh

您可能想在此处查看此示例:http: //bash.cyberciti.biz/backup/backup-mysql-database-server-2/

MYSQLDUMP="$(which mysqldump)"
$MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db
于 2012-12-27T20:46:09.563 回答