我试图运行一个msyql命令,其中包括一个带引号的字符串,如:庆典增加了逃逸字符传递带引号的字符串时
mysql -h host -u=user -p=pass -e "show tables" database.
在这里,我遇到了困难传递“节目表”用引用来执行命令的功能。
run_cmd() # Run a command
{
local output=$1
local timeout=$2
shift 2
($* > $output 2>&1) &
# ....
}
# Query mysql
query_mysql(){
local mysql_cmd=("mysql -h $host --user=$user --password=$pass -e "show tables" $db")
run_cmd $output $timeout "${mysql_cmd[@]}"
}
query_mysql
我尝试了很多组合,但是这个命令得到执行或者不带引号或者带有多个single/double/escape字符。在所有情况下,由于缺少/额外的引号/字符,最终的命令将变为无效。
我尝试&最终命令的几个:
"show tables"
mysql -h localhost --user=root --password=foo -e show tables db1
'show tables'
mysql -h localhost --user=root --password=foo -e ''\''show' 'tables'\''' db1
\"show tables\"
mysql -h localhost --user=root --password=foo -e '"show' 'tables"' db1
任何建议传递引号的字符串作为是什么?
在此先感谢!
你试过双斜杠吗? – 2014-12-01 22:28:42
使用\\“show table \\”,我得到 - > mysql -h localhost --user = root --password = foo -e'\ show''table \'db1(仍然包含不必要的字符:( – Najmuddin 2014-12-01 22:34:28
nope,我试过这个命令变成了“mysql -h localhost --user = root --password = foo -e'”show''table''db1“ – Najmuddin 2014-12-01 22:43:11