我正在尝试设计一个循环,它实现了我以前见过的很多单个元素,这个组合让我失望。基本上我有这样的结构:
/bin/script.sh
/conf/patches/1.zip
/conf/patches/2.zip
/conf/patches/3.zip
/sharedir
我想要一个循环,但是我会在/ conf / patches中找到许多补丁,将每个补丁解压缩到/ sharedir中的一个单独目录中。应将每个目录命名为文件名。
到目前为止我尝试的是:
for file in '../conf/patches/*.zip'
do
unzip "${file%%.zip}" -d /sharedir/$file
done
正如你所看到的......在这种组合中我肯定缺少一些东西。
答案 0 :(得分:1)
从glob模式中删除引号,否则不会展开:
for file in ../conf/patches/*.zip
do
unzip "${file%%.zip}" -d /sharedir/
done
编辑:您可以尝试
for f in ../conf/patches/*.zip; do
echo g="${f%%/*}"
unzip -d "sharedir/${g%*.zip}" "$f"
done
答案 1 :(得分:1)
试试这个:
for file in /conf/patches/*.zip
do
f="${file##*/}"
mkdir -p "/sharedir/${f%.zip}"
unzip -d "/sharedir/${f%.zip}" "${file}"
done