星号(*)

当用于shell变量时,

[root@zabbix_nuc ~]# sql='select * from mysql.user'
[root@zabbix_nuc ~]# echo "$sql"
select * from mysql.user
[root@zabbix_nuc ~]# echo $sql
select 2018-07-18.log anaconda-ks.cfg speedtest.py test.sh from mysql.user

[root@zabbix_nuc ~]# sql="select *  from mysql.user"
[root@zabbix_nuc ~]# echo "$sql"
select *  from mysql.user
[root@zabbix_nuc ~]# echo $sql
select 2018-07-18.log anaconda-ks.cfg speedtest.py test.sh from mysql.user

[root@zabbix_nuc ~]# set -f //                # 关闭通配符
[root@zabbix_nuc ~]# echo $sql
select * from mysql.user
[root@zabbix_nuc ~]# set +f //
[root@zabbix_nuc ~]# echo $sql          # 开启通配符
select 2018-07-18.log anaconda-ks.cfg speedtest.py test.sh from mysql.user
[root@zabbix_nuc ~]# 

由上可知:

变量定义的时候是没有问题的:当定义时单引号和双引号都可以;
执行的时候被解释了:echo时要把变量括起来,否则星号(*)会代替当前目录下的文件和目录。