请求编写Bash脚本:将array1元素转换为array2指定格式
Bash脚本实现数组格式转换
需求是将array1中的每个S3路径与后续所有日期(直到下一个S3路径出现)拼接成完整路径,作为array2的独立条目。以下是实现脚本:
#!/bin/bash # 原始输入数组 array1=(s3://root/sub1/sub2/ 2022-10-22 2021-09-13 2020-08-15 s3://root/sub1/sub2/ 2022-09-22 2021-08-07 2020-02-03 s3://root/sub1/sub2/ 2022-08-22 2021-07-17 s3://root/sub1/sub2/ 2022-07-22) # 初始化目标数组和当前S3路径变量 array2=() current_s3="" # 遍历原始数组的每个元素 for item in "${array1[@]}"; do # 判断当前元素是否为S3路径(以s3://开头) if [[ "$item" == s3://* ]]; then current_s3="$item" else # 拼接路径并确保末尾带斜杠 combined_path="${current_s3}${item}/" # 将拼接结果加入目标数组 array2+=("$combined_path") fi done # 可选:打印转换后的数组验证结果 echo "转换后的array2内容:" printf '%s\n' "${array2[@]}"
关键逻辑说明
- 用
current_s3变量跟踪当前要拼接的S3路径,遇到新的S3路径时更新这个变量。 - 遍历过程中,遇到日期元素就和当前
current_s3拼接,自动处理不同组的日期对应不同S3路径的情况。 - 拼接时强制加上末尾的
/,保证和目标格式完全一致。
运行脚本后,array2的内容会和需求中的目标格式完全匹配。
内容的提问来源于stack exchange,提问作者digitvldvl
相关产品推荐
相关产品推荐

