【问题标题】:bash - passing a pattern including wildcards as a parameter to recursive functionbash - 将包含通配符的模式作为参数传递给递归函数
【发布时间】:2015-05-18 11:32:49
【问题描述】:

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

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 中给出的字符串。 主要目的只是学习,我要避免的具体错误是存储在pattern中的通配符被解释为文件名时遇到的错误。

find、stat 和使用不带 ls 的模式可以获得所需的输出(我很高兴学习最优雅的方式。但这里的主要问题是如果你想通过,如何处理通配符它们作为参数。

【问题讨论】:

    标签: bash function wildcard ls expansion


    【解决方案1】:

    在值不应该被扩展的地方用双引号引起来:

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

    【讨论】:

      猜你喜欢
      • 2014-06-27
      • 2014-02-07
      • 2020-05-15
      • 2021-10-05
      • 2013-01-27
      • 2011-08-06
      • 2013-10-27
      相关资源
      最近更新 更多