在shell脚本中执行linux命令

时间:2012-12-27 20:43:21

标签: unix

我正在尝试执行一个命令,但命令太长了,并且只能从命令行运行太长。所以我想把它放在一个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

2 个答案:

答案 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

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