BASH SQLITE3 LIKE 子句后的变量

BASH VARIABLE ADEED AFTER SQLITE3 LIKE CLAUSE

我对我试图插入脚本的 sqlite3 命令有疑问

if [[ -n $(tail -z 600 /var/log/pihole.log | grep "$IP" | wc -c) ]];then

sudo -u pihole sqlite3 /etc/pihole/pihole-FTL.db 'DELETE FROM network WHERE hwaddr LIKE "$MAC"'

fi

但很快我 运行 我的程序实际上并没有按照它的目的运行!

我已经尝试使用真实的 mac 地址代替变量 $MAC 并且它有效!

所以我的问题是如何在这个特定的 bash 命令和我的脚本中实际附加一个变量!

提前致谢,非常感谢!

您的问题是单引号的使用:在 bash 中变量没有用单引号展开。您可以通过使用双引号或混合使用单引号和双引号来解决此问题(确保要扩展的变量在双引号中):

$ MAC=1111
$ echo "DELETE FROM network WHERE hwaddr LIKE \"$MAC\""
DELETE FROM network WHERE hwaddr LIKE "1111"
$ echo 'DELETE FROM network WHERE hwaddr LIKE '"\"$MAC\""
DELETE FROM network WHERE hwaddr LIKE "1111"