bash - 将包含通配符的模式作为参数传递给递归函数

时间:2015-03-16 11:09:47

标签: bash function wildcard ls expansion

我仍然对变量扩展的方式感到困惑。这是我的代码:

if [ "$2" ]; then
  pattern="*$2*"
else
  pattern=""
fi

function list(){
  ls -lF $2 > output_file
  for dir in `ls -d1 */`; do
     list "$dir" $2
  done
}
cd $1; path=`basename $PWD`
list "$path" $pattern

此脚本尝试存储$ 1中包含的文件的一些文件信息,其名称包含$ 2中给出的字符串。 主要目的只是学习,我想避免的具体错误是我在模式中存储的通配符被解释为文件名时得到的错误。

查找,统计和使用没有ls的模式可以得到所需的输出(我会很高兴学习最优雅的方法。但是这里的主要问题是如果你想通过如何处理通配符它们作为参数。

1 个答案:

答案 0 :(得分:2)

双引用不应扩展值的变量:

list "$dir" "$2"
# ...
list "$path" "$pattern"