我有以下脚本,它将许多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
答案 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