![如何将 .* 作为值分配给 bash 中的变量](https://linux22.com/image/138418/%E5%A6%82%E4%BD%95%E5%B0%86%20.*%20%E4%BD%9C%E4%B8%BA%E5%80%BC%E5%88%86%E9%85%8D%E7%BB%99%20bash%20%E4%B8%AD%E7%9A%84%E5%8F%98%E9%87%8F.png)
当我将 .* 分配给变量时,它正在分配所有隐藏文件。
[root@s1 ~]# a=".*"
[root@s1 ~]# echo $a
. .. .bash_history .bash_logout .bash_profile .bashrc .cache .config .cshrc .history .lesshst .mozilla .pki .rnd .ssh .tcshrc .viminfo .virsh .xauth6SHzeY .xauthhAVYfm .xauthI6Cte3 .xauthk7ea35 .xauthlXtiZ9 .Xauthority .xauthQm7mJ8 .xauthTpWbxP .xauthY9KsdC
我期望以下输出:
.*
怎么逃脱啊,谢谢
我在下面尝试过,它给出了输出
[root@s1 ~]# a='".*"'
[root@s1 ~]# echo $a
".*"
“.*”
但不是
.*
答案1
在将字符串分配.*
给变量时,您没有做错任何事情,但是由于您使用不带引号的变量echo
,因此 shell 将在调用之前对其值执行(分词和)文件名生成(通配)echo
。
为了防止这种情况,请双引号变量扩展:
echo "$a"
有关的:
答案2
由于您需要致电:
echo ".*"
为了不让它扩展,你当然还需要调用:
a=".*"
echo "$a"