【发布时间】:2019-07-11 01:49:57
【问题描述】:
在 bash 中,我编写了一个函数,该函数使用通配符遍历具有多个扩展名的目录中的文件,并仅复制这些特定文件(如果存在)。代码的 sn-p 如下所示:
set -e
pushd ../../../../$3/code/project/common/ > /dev/null
mkdir -p ../$2
shopt -s nullglob
for file in *.gyp; do cp $file ../$2/; done
for file in *.gypi; do cp $file ../$2/; done
for file in *.sh; do cp $file ../$2/; done
for file in *.patch; do cp $file ../$2/; done
popd > /dev/null
我宁愿写一个for file in x 语句,这样我就不必为要复制的每个扩展名复制和粘贴这一行。
如何将四个for 语句重写为一个for 语句?如果可能的话,我想将*.ext 通配符格式保留在某处。
【问题讨论】:
-
Shellcheck 标识了代码中缺少引号的几个实例。
标签: bash shell for-loop wildcard