File 压缩多个目录中的文件

File 压缩多个目录中的文件,file,directory,compression,File,Directory,Compression,我想压缩多个目录中的文件。出于某种原因,它只压缩第一个目录(/Sanbox/logs1),而不压缩其余目录(“/Sanbox/logs2”“/Sanbox/logs3”“/Sanbox/logs4”)。任何帮助都将不胜感激。这是我的密码: #!/bin/bash LOG_FILES=( "/Sanbox/logs1" "/Sanbox/logs2" "/Sanbox/logs3" "/Sanbox/logs4" ) for file in ${LOG_FILES[file]}/* ; do

我想压缩多个目录中的文件。出于某种原因,它只压缩第一个目录(/Sanbox/logs1),而不压缩其余目录(“/Sanbox/logs2”“/Sanbox/logs3”“/Sanbox/logs4”)。任何帮助都将不胜感激。这是我的密码:

#!/bin/bash

LOG_FILES=( "/Sanbox/logs1" "/Sanbox/logs2" "/Sanbox/logs3" "/Sanbox/logs4" )

for file in ${LOG_FILES[file]}/* ; do
    gzip "${file}"
done

我建议您在脚本中更改两件事。 第一种方法是,如何在for循环中使用数组。 尝试使用

for file in ${LOG_FILES[@]}; do
    # code that creates archives
done
使用“@”或“*”作为索引号表示整个数组应在for循环中使用

第二件事是创建目录路径的方式,该路径用于创建归档文件。尝试在for循环体内部添加“/*”,而不是在带有for do的行中

像这样的东西应该能奏效

LOG_FILES=( "/Sanbox/logs1" "/Sanbox/logs2" "/Sanbox/logs3" "/Sanbox/logs4" )

for file in ${LOG_FILES[@]}; do
    gzip "${file}"/*; 
done
有关在Bash中使用arrayis的更多信息,请查看