2014-04-19 58 views
0

我想在OSX终端运行,下面的查询它使返回:-bash:靠近意外的标记语法错误'(”

-bash: syntax error near unexpected token `(' 

我敢肯定,我俯瞰东西很愚蠢如果有人能在正确的方向指向我,我会很感激它的命令包括SQL查询的程序执行:

java -Xmx16g -cp .:lib/* edu.cuny.util.VectorToInstancesConverter train HandednessJ48 “SELECT * FROM collection1.Session1 WHERE Subj_Id!=402 and Subj_Id not in (select Subj_id from collection1.Session2) AND Subj_Id IN (SELECT Subj_Id FROM collection1.userdata WHERE 'DominantHand' = 'l' OR 'DominantHand' = 'r')” 12 J48 
+1

庆典正在努力读书'(',因为是在shell脚本特殊字符,如对自己的指示。它需要被转义。 –

回答

3

问题是,当你使用" bash会在它的任何评价相反,你应该使用',试试这个:

java -Xmx16g -cp .:lib/* edu.cuny.util.VectorToInstancesConverter train 
HandednessJ48 'SELECT * FROM collection1.Session1 WHERE Subj_Id!=402 
and Subj_Id not in (select Subj_id from collection1.Session2) AND 
Subj_Id IN (SELECT Subj_Id FROM collection1.userdata WHERE 
'DominantHand' = 'l' OR 'DominantHand' = 'r')' 12 J48 

或@bhesh已经规定可以划定哪些bash将试图评估字符:

java -Xmx16g -cp .:lib/* edu.cuny.util.VectorToInstancesConverter train 
HandednessJ48 "SELECT * FROM collection1.Session1 WHERE Subj_Id!=402 
and Subj_Id not in \(select Subj_id from collection1.Session2\) AND 
Subj_Id IN \(SELECT Subj_Id FROM collection1.userdata WHERE 
'DominantHand' = 'l' OR 'DominantHand' = 'r'\)" 12 J48 
+0

谢谢。我知道我忽略了一些微不足道的东西。 –

+0

问题是发布的代码不使用普通双引号,而是U + 201C和U + 201D,它们根本不被识别为引号。只有参数扩展和命令替换在单引号和双引号之间被区别对待,在这里也没有使用。使用普通的ASCII双引号可以像单引号一样工作。 – chepner

+0

请注意,使用单引号在这里实际上效果不佳,因为您不能在单引号内嵌入其他引号。原本打算作为SQL查询一部分传递的单引号会关闭并打开传递给'java'的参数。 – chepner

相关问题