Linux bash:一个接一个地处理文件
我编写了一个脚本,它应该获取第一个tar文件,执行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的赋值只接受第一
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
因为您没有向脚本传递任何内容,所以在脚本中有赋值。