我正在尝试编写一个bash脚本,其中包含执行以下查询的函数:
query() {
cmd="mysql -N -B -u $user -p$password -h $host -e "$q;"" #2>&1";
eval $cmd
}
q="select * from mydatabase.mytable"
在调用查询时,*
字符将所有内容弄乱并展开为当前目录的列表。
我怎样才能避免这种情况?函数应该接受任何有效的SQL语句。
使用set -f禁用globing似乎可以解决问题:
query(){
set -f
cmd="mysql -N -B -u $user -p$password -h $host -e "$q;"" #2>&1";
echo $cmd
eval $cmd
set +f
}
这是最好的方法吗?