Linux bash:一个接一个地处理文件

Linux bash:一个接一个地处理文件,linux,bash,shell,Linux,Bash,Shell,我编写了一个脚本,它应该获取第一个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的赋值只接受第一

我编写了一个脚本,它应该获取第一个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

因为您没有向脚本传递任何内容,所以在脚本中有赋值。