我想在多个目录中压缩文件。出于某种原因,它只压缩第一个目录(/ 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
答案 0 :(得分:1)
我建议您在脚本中更改两件事。 第一个是方法,你如何在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的详细信息,请查看Bash Begginers Guide: Array variables