在bash中转义双引号不能按预期工作

时间:2018-03-11 12:54:57

标签: bash

此示例效果很好:

if [[ "$(mysql -sse 'USE my_bd; SELECT COUNT(*) FROM my_table" -gt "0" ]]; 
  then echo 1;
  else echo 0;
fi

但我需要在'

中添加需要引号mysql -e 'query...'的WHERE子句

所以我需要像这样更改引号顺序并用{{1>}括起来

我试图用mysql -e "query..."

逃脱
\"

但是这引发了bash错误

  

-bash:命令替换:第21行:意外令牌附近的语法错误`('

我看到了有关if [[ "$(mysql -sse \"USE my_bd; SELECT COUNT(*) FROM my_table WHERE my_column = 'something'\"" -gt "0" ]]; then echo 1; else echo 0; fi 的其他问题,但答案在我的案例中不起作用

1 个答案:

答案 0 :(得分:2)

您可以直接使用以下命令:

if [[ "$(mysql -sse "USE my_bd; SELECT COUNT(*) FROM my_table WHERE my_column = 'something')" -gt "0" ]]; 
  then echo 1;
  else echo 0;
fi

我刚刚在测试环境中测试了上面的命令,它运行正常。请参阅以下类似示例:

 if [[ "$(mysql -sse "use testdb ; SELECT COUNT(*) from student where stu_id = '1001'")" -gt 0 ]];
   then echo "1" ; 
   else echo "0"; 
 fi
 1