我試圖運行一個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