我正在尝试执行一个命令,但命令太长了,并且只能从命令行运行太长。所以我想把它放在一个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
答案 0 :(得分: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
答案 1 :(得分:0)
就语法而言,你的shell脚本对我来说似乎很好......
我要小心的是脚本中的所有相对路径,更具体地说是./mysqldump
和../../conf/mysql.conf
。使用相对路径要求脚本始终从文件系统中的特定目录执行。使用绝对路径可以使脚本更安全,但它确实将其绑定到特定位置。
如果您坚持使用相对路径,则可以将脚本放在应该运行的目录中,然后使用绝对路径调用 it 。
要运行脚本,您应该使用chmod +x
(或其某些变体)使其文件可执行,或将其作为参数传递给sh
,例如: sh /path/to/my/script.sh
。
如果您提到当前脚本存在的确切问题,我们可能会提供更多帮助......