bash shell脚本 - 列出cmd行arg中指定的某种模式的文件

时间:2016-08-05 20:39:41

标签: bash shell

我制作了一个通用的bash脚本,其输入$ 1是它想要通过的文件模式。现在我有

for entry in ./$1; do
  echo "$entry"
done

但是当我运行时,我得到了

$ ./stuff.sh PRM*
./PRM.EDTOUT.ZIP

虽然有许多模式PRM *的文件。有没有办法在命令行args中指定此模式并正确列出相同模式的所有文件?

1 个答案:

答案 0 :(得分:4)

当您致电PRM*时,./stuff.sh 'PRM*' 会被shell扩展为匹配的文件。 如果你想在没有扩展的情况下传递模式,那么你必须引用它:

for entry; do
  echo "$entry"
done

但实际上,最好让shell扩展它(不要引用它,在示例中使用它),但是更改脚本以获取多个参数,如下所示:

for entry

没错,没有"在"在for之后。没有必要。 默认情况下,for entry in "$@"; do echo "$entry" done 循环在缺少""的情况下使用位置参数。条款。 换句话说,上述内容相当于:

const orig = {
  foo: {
    bar: 1
  }
}

const { foo } = orig;

console.log(foo.bar);      // 1
console.log(orig.foo.bar); // 1

foo.bar++;

console.log(foo.bar);      // 2
console.log(orig.foo.bar); // 2