英文:
Creating loop iteration using Array and create zip file
问题
I've translated the code portion you provided:
尝试根据目录创建zip文件,以基于dirs命令声明的当前目录启动进程。然后根据分配给dirs的目录以数组格式存储。使用for循环(sub_dir)从dirs[@]中获取输入数据作为列表,并在创建zip文件之前打印文件名。
运行脚本时我没有看到任何错误消息,但在脚本完成后我没有得到任何zip文件。
目录结构:
└─# tree
.
├── Inbound
│ └── Lambda
│ ├── app-inbound
│ │ ├── outbound-primary.py
│ │ └── requirements.txt
│ └── app-outbound
│ ├── inbound-primary.py
│ └── requirements.txt
#!/bin/bash
start_dir=/tmp/Inbound
echo "start_dir=$start_dir"
for d in "$start_dir"/*/ ; do
cd "$d" || exit
dirs=(*/)
declare -p dirs
echo "Entering into location"
for sub_dir in "${dirs[@]}"
do
echo "$sub_dir"
zip "$sub_dir".zip "$sub_dir"
done
done
If you have any specific questions or need further assistance, feel free to ask.
英文:
Trying to create zip file based on the directories, to initiate process declared as current directory based on dirs command. Then based on the dirs assigned the directory into array format. Using for loop (sub_dir) get the input data from dirs[@] as list and it will print the file name before creating zip file.
I don't see any error message while running the script but I'm not getting any zip file after the script completion.
Directory structure
└─# tree
.
├── Inbound
│   └── Lambda
│   ├── app-inbound
│   │   ├── outbound-primary.py
│   │   └── requirements.txt
│   └── app-outbound
│   ├── inbound-primary.py
│   └── requirements.txt
#!/bin/bash
start_dir=/tmp/Inbound
echo "start_dir=$start_dir"
for d in "$start_dir"/*/ ; do
cd "$d" || exit
dirs=(*/)
declare -p dirs
echo "Entring into location"
for sub_dir in "${dirs[@]}"
do
echo "$sub_dir"
zip "$sub_dir".zip "$sub_dir"
done
done
答案1
得分: 2
你需要执行以下命令:
zip "${sub_dir%/}.zip" "$sub_dir"
因为如果你使用 bash -x
启用调试模式,你会看到:
+ zip app-inbound/.zip app-inbound/
这是一个参数扩展,用于删除末尾的 /
。
英文:
You need:
zip "${sub_dir%/}".zip "$sub_dir"
Because if you put debug mode with bash -x
, you will see:
+ zip app-inbound/.zip app-inbound/
It's a parameter expansion to delete trailing /
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论