我编写了一个脚本,它应该包含第一个tar文件,执行script.sh,然后是第二个tar文件,依此类推。
这就是script.sh的样子:

tarball=(`ls -a | cut -d "." -f 1`)
mkdir ./$tarball
tar -zxvf $tarball.tar -C ./$tarball

我使用以下命令执行script.sh
for tarball in ./*.tar; do bash script.sh; done

但是变量tarball的赋值只接受第一个文件并对其进行处理(在上面发布的代码之后,有一些awk命令将一些输出写入文件)。
如何编写脚本,以便在获取第一个tar文件后,再获取第二个tar文件,依此类推?

最佳答案

您可以在脚本中执行此操作,也可以将while循环放在脚本中,并将所需的任何列表管道化到脚本中:

ls -1 | cut -d "." -f 1 |
    while read tarball
    do
        mkdir "$tarball"
        tar -zxvf "${tarball}.tar" -C ./"$tarball"
    done

10-08 07:11