Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在循环中更改shell脚本中的目录?_Linux_Bash_Shell_Compression_Sh - Fatal编程技术网

Linux 如何在循环中更改shell脚本中的目录?

Linux 如何在循环中更改shell脚本中的目录?,linux,bash,shell,compression,sh,Linux,Bash,Shell,Compression,Sh,我有上千个压缩文件,从1022开始按降序命名;并且需要提取所有这些。我试图做的是编写一个shell脚本,它将实现这一点。以下是到目前为止我得到的信息: cd "PATH" for file in PATH/*; do filename=${PWD: -4} extract $file numb=$(echo $filename - 1 | bc) echo $numb cd "$numb" done “提取”函数提取任何压缩格式 问题是循环似乎没有

我有上千个压缩文件,从1022开始按降序命名;并且需要提取所有这些。我试图做的是编写一个shell脚本,它将实现这一点。以下是到目前为止我得到的信息:

cd "PATH"

for file in PATH/*; do
    filename=${PWD: -4}

    extract $file

    numb=$(echo $filename - 1 | bc)
    echo $numb
    cd "$numb"
done
“提取”函数提取任何压缩格式


问题是循环似乎没有在新目录中进行。有人能帮我解决这个问题吗?

你为什么认为
cd
不起作用?请注意,
PATH/*
在循环开始时展开一次,而不是在正文的每次迭代后展开。这可能会有所帮助:如果您在目录
1022
中,则不能使用简单的
cd1023
在目录
1023
中进行更改。您需要这样的东西:
cd../1023
。您的
文件名可能是错误的。也许你可以重复一下,看看有什么问题。还可以看到,,,等等,但不知道具体的目录结构是什么--这是一个偶然的机会,但您可能可以通过一个简单的
find
one liner:
cd PATH来实现您的目标;找到-f型-exec gunzip{f}\
将使用
gunzip
解压路径中的每个文件。调味。如果这不起作用,你需要提供更多关于你试图解决的问题的信息。