将两个文件合并为单个文件

时间:2015-09-16 05:05:04

标签: json shell

我有以下脚本,它将许多json文件合并为一个。但是第一个文件在最终输出文件中打印两次,即使我已从列表中删除了第一个文件。请建议如何只打印第一个文件一次。 Bash Script粘贴在下面。

#!/bin/bash
shopt -s nullglob
declare -a jsons
jsons=(o-*.json) 
echo '[' > final.json
if [ ${#jsons[@]} -gt 0 ]; then 
cat "${jsons[0]}" >> final.json 
unset $jsons[0]                    
for f in "${jsons[@]}"; do # iterate over the rest
echo "," >>final.json
cat "$f" >>final.json
done
fi
echo ']' >>final.json         

1 个答案:

答案 0 :(得分:1)

您无法使用unset ${foo[0]}从bash中的数组变量中删除项目。

$ foo=(a b c)
$ echo "${foo[@]}"
a b c
$ unset ${foo[0]}
$ echo "${foo[@]}"
a b c

您需要使用数组切片重置阵列本身。

$ foo=("${foo[@]:1}")
$ echo "${foo[@]}"
b c

请参阅:How can I remove an element from an array completely?