在变量中使用星号作为bash的扩展名

时间:2020-08-13 15:35:47

标签: linux bash variables

我想定义一个包含星号(*)的变量,像这样

var=*.fits

asterisk.fits不是我文件的名称,而是某些带有fits扩展名的文件的名称。
实际上,我想定义此变量以在下一阶段使用它:

ls "$var"

这样我可以看到所有扩展名为.fits的文件。

我该怎么做?似乎仅写var=*.fits无效。

预先感谢

1 个答案:

答案 0 :(得分:1)

如果您希望将通配符 赋值存储在变量中而无需 globbing 分词,则必须引用它

var='*.fits *.txt'
var=*.fits
ls $var

在分配var=期间不执行通配符(但会进行单词拆分)
如您所见,您必须不要引用$var输出来对其进行评估

外壳扩展到在滑动时发现的任何东西

ls "$var"
ls: cannot access '*.fits': No such file or directory

ls $var
file1.fits file2.fits file3.fits