Этот вопрос уже имеет ответ здесь:
Я пытаюсь выполнить следующую команду:
mysql AMORE -u username -ppassword -h localhost -e "SELECT host FROM amoreconfig"
Я храню его в строке:
cmd="mysql AMORE -u username -ppassword -h localhost -e\"SELECT host FROM amoreconfig\""
Протестируйте его:
echo $cmd
mysql AMORE -u username -ppassword -h localhost -e"SELECT host FROM amoreconfig"
Попытайтесь выполниться путем выполнения:
$cmd
И я получаю страницу справки mysql:
mysql Ver 14.14 Distrib 5.1.31, for pc-linux-gnu (i686) using readline 5.1
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Usage: mysql [OPTIONS] [database]
(...)
Я предполагаю, что делаю что-то простая несправедливость с кавычками, но не могу узнать то, что является проблемой.
]Пытались ли вы:[
] [eval $cmd
]
[]Для последующего вопроса о том, как избежать []*[
], так как он имеет особое значение, когда он голый или в двойных кавычках: используйте одинарные кавычки.[
MYSQL='mysql AMORE -u username -ppassword -h localhost -e'
QUERY="SELECT "'*'" FROM amoreconfig" ;# <-- "double"'single'"double"
eval $MYSQL "'$QUERY'"
]
[]Бонус: Также хорошо читается: eval mysql-запрос ;-)[
].] попробуйте это[
] [$ cmd='mysql AMORE -u root --password="password" -h localhost -e "select host from amoreconfig"'
$ eval $cmd
]