shell 脚本选项传递给子命令

bat*_*tad 5 bash getopts arguments

我正在编写一个包装脚本,用于getoptsmysqldump. 到目前为止,它运行良好。

然而,我想做的一件事是能够在我的 shell 脚本中添加另一个选项,其内容应该准确地传递给 mysqldump 命令。有点像这样传递的选项:
./mysqldumpwrapper.sh -u username -p password -h localhost -o "--no-create-db --replace"
-o 参数的字符串内容完全传递给我的mysqldump命令。

因为我getopts在尝试上述操作时正在使用,所以我得到以下输出:
Invalid option: --

有谁知道如何解决这个问题?
有没有办法逃避选项的输入,这样getopts就不会将内容解析为另一个选项?

然后,当涉及到从我的 shell 脚本触发实际命令时,这就是我所得到的:
mysqldump "$OPTIONSPASSTHROUGH" --host=$MYSQL_HOST --user=$MYSQL_USER --password=$MYSQL_PASS "$DB" > "$FILE_DEST"
因为 OPTIONSPASTHROUGH 变量中很可能有空格,所以我在该命令中引用了该变量。那是对的吗?

Hau*_*ing 0

一种解决方法是:

... -o "x--no-create-db --replace"

# in the script:
option="${option#x}"
Run Code Online (Sandbox Code Playgroud)

作为一般规则:您应该引用所有内容(可能被引用的内容)。