我可能遗漏了一些非常基本的东西 . 我有一个Web脚本,告诉shell脚本更新一些数据库记录 . 这些记录用于统计信息,这样Web脚本就不必在更新数据库记录时等待 . 但是,我实际上无法让shell脚本从命令行运行它 . 这是我正在尝试的代码:
perl async_sql.pl 'UPDATE some_table set i = i + 1 WHERE (n in (\'328430\',\'334969\',\'330179\',\'335290\',\'335285\',\'335284\',\'335264\',\'335145\',\'335146\',\'335147\',\'335148\',\'335149\',\'335230\',\'335201\',\'335198\',\'335196\',\'335167\',\'335151\',\'335152\',\'335143\',\'334969\',\'334972\',\'334977\',\'334978\',\'334979\',\'334980\',\'334982\',\'334983\',\'334984\',\'334934\',\'334947\',\'334948\',\'334950\',\'334992\',\'335014\',\'335026\',\'335030\',\'335032\',\'334864\',\'334862\',\'334861\',\'334858\',\'334855\',\'334852\',\'334850\',\'334849\',\'334848\',\'334847\',\'334844\',\'334842\'))'
巴什告诉我:
-bash:意外令牌附近的语法错误`)'
我错过了什么?
1 回答
单引号中的单引号是不可能的 . 请改用
" "
此外,还有其他方法可以解决此问题:
所有这些应该打印
quote'test
作为单个参数 . 这意味着您的问题的另一个很好的解决方案是:我只在参数前面放了一个美元符号
$
. 而已 . 单引号前的美元符号开启ANSI-C Quoting