我是bash脚本的新手,我正在练习一些简单的脚本。我正在创建一个连接到MySQL数据库的脚本,执行查询并回显结果。 这是我到目前为止所得到的,但我得到了这个令人沮丧的错误:
./testsql: line 22: syntax error near unexpected token `queryConfig="mysql -uroot -p1234 test"'
./testsql: line 22: `queryConfig="mysql -uroot -p1234 test"'
这是我脚本中的功能。
function testFunction{
queryConfig="mysql -uroot -p1234 test"
hello=`$queryConfig"SELECT * FROM test_accounts;"`
echo "Result = " $hello
}
好的我知道理想情况下我不应该将用户名和密码传递给脚本,而是使用config.sh,然后将其包含在脚本中。使用root也不理想。但重要的是我理解sytax错误在哪里以及解释器为什么抱怨。 一旦我完成这项工作,我就可以相应地创建一个config.sh和变量。 感谢。
答案 0 :(得分:1)
试试这个
var=$(mysql database -u $user -p$password<<<"SELECT * FROM test_accounts")
答案 1 :(得分:0)
此错误:
./testsql: line 22: syntax error near unexpected token `queryConfig="mysql -uroot -p1234 test"'
说Bash脚本的第22行有语法错误(即它不是有效的Bash)。解析器并不认为你可以在这里做变量赋值。但为什么呢?
问题出在上面一行:
function testFunction{
Bash非常敏感空白,并且您在函数名称和{
字符之间缺少空格。尝试添加空格,您将解决此语法错误。
您的脚本中还有其他问题(除了您提到的安全问题之外),我将简要介绍一下:
$(...)
更喜欢command substitution。当你开始在另一个内部嵌套替换时,它更容易阅读并且工作得更好。注意空白,例如你的下一行
hello=`$queryConfig"SELECT * FROM test_accounts;"`
将执行命令
mysql -uroot -p1234 testSELECT * FROM test_accounts;
注意testSELECT
那里 - 你错过了一个空格。