转义bash中的双引号未按预期工作

转义bash中的双引号未按预期工作,bash,Bash,这个例子效果很好: if [[ "$(mysql -sse 'USE my_bd; SELECT COUNT(*) FROM my_table" -gt "0" ]]; then echo 1; else echo 0; fi 但是我需要添加一个WHERE子句,该子句需要在mysql-e'query…“ 因此,我需要像这样更改引号顺序,并用双引号括起mysql-e“query…” 我试图用\“ 但这引发了一个bash错误 -bash:命令替换:第21行:意外标记“(”附近出现语法错误

这个例子效果很好:

if [[ "$(mysql -sse 'USE my_bd; SELECT COUNT(*) FROM my_table" -gt "0" ]]; 
  then echo 1;
  else echo 0;
fi
但是我需要添加一个WHERE子句,该子句需要在
mysql-e'query…“

因此,我需要像这样更改引号顺序,并用双引号括起
mysql-e“query…”

我试图用
\“

但这引发了一个bash错误

-bash:命令替换:第21行:意外标记“(”附近出现语法错误


我看到了关于如何在bash中转义双引号的其他问题,但答案在我的情况下不起作用

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

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

我看不到
$(mysql
越来越近了如果我把
“$(mysql
改成
$(mysql
效果很好。Bfff我尝试了很多组合,但不是那个。谢谢,下面的答案也很有效。我需要更多的咖啡:)因为两边的值都是数字,所以它不需要
,但如果该值预期为字符串,则无效。您也有理由。我是fill ridiculuos;)请参阅
man bash
中的命令替换部分“使用$(命令)表单时,括号之间的所有字符组成命令;没有一个字符被特殊处理。”谢谢。很高兴知道这一点。(我没有学习信息学……但我尽量学习)
 if [[ "$(mysql -sse "use testdb ; SELECT COUNT(*) from student where stu_id = '1001'")" -gt 0 ]];
   then echo "1" ; 
   else echo "0"; 
 fi
 1