如何将多个命令组合成嵌套循环?

如何将多个命令组合成嵌套循环?

我在一个 shell 脚本中有三个命令:wget7zrm

里面list.txt

URL1 archive_01.zip  
URL2 archive_02.zip  
URL2 archive_03.zip

下载档案:

while read -r url filename; do
    wget -O "$filename" "$url";
done < list.txt  

$ ls
archive_01.zip
archive_02.zip
archive_03.zip

提取档案:

for file in *zip; do
    7z x $file;
done

$ ls
archive_01.zip
archive_02.zip
archive_03.zip
文件夹_01 文件夹
_02
文件夹_03

删除档案:

rm *zip

是否可以将这三个命令做成嵌套循环?如果可以,怎么做?

我也很好奇,因为上面的命令将像这样执行(如果我没记错的话):

下载 URL1 > 下载 URL2 > 下载 URL3
提取存档 1 > 提取存档 2 > 提取存档 2
删除存档 1 > 删除存档 2 > 删除存档 3

如何让执行变成这样?

下载 URL1 > 提取存档 1 > 删除存档 1
下载 URL2 > 提取存档 2 > 删除存档 2
下载 URL3 > 提取存档 3 > 删除存档 3

答案1

像这样的东西吗?

#! /bin/bash -

while read -r url filename; do
    wget -O "$filename" "$url"
    7z x "$filename"
    rm -- "$filename"
done < list.txt

答案2

while read -r url filename; do
  wget -O "$filename" "$url";
  7z x $filename
  rm $filename
done < list.txt  

应该做你想做的事。

相关内容