如何将通配模式作为参数传递给 bash 中的函数?

如何将通配模式作为参数传递给 bash 中的函数?

我有一个作业,其中我将文件模式传递给函数,如下所示:

line=FILE*.txt
getFlag $line

而函数如下:

function getFlag
{
    filepattern=$1
    echo "File pattern is: $filepattern"
}

我需要输出为

File pattern is: FILE*.txt

当我得到输出作为文件夹中存在的匹配文件名时,如下所示:

File pattern is: FILE123.txt

虽然我将文件模式作为变量传递给函数,但它不会阻止变量扩展,并且与变量中的模式匹配的文件名正在被传递。

非常感谢上述任何帮助。

答案1

作为伊尔卡丘 说,您可以用单引号或双引号引用传递给此函数的参数:

line='FILE*.txt'

或者

line="FILE*.txt"

那些告诉 Bash 执行替代或一些分别进行替换而不进行文件名扩展。

另一种选择是转义*when 设置行,然后使用引号将参数传递给函数:

line=FILE\*.txt
getFlag "$line"

相关内容