有人可以帮助修复此代码吗?我无法在运行时创建 csv 文件
#!/bin/bash
# Read JSON content from a parameter or file
JSON_CONTENTS=$(cat <<EOF
[
{"projectName": "Project1", "jobName": "Job1", "version": "1.0"},
{"projectName": "Project2", "jobName": "Job2", "version": "2.0"}
]
EOF
)
# Initialize CSV content
csvContent="projectName,jobName,version\n"
# Function to extract value from JSON
extract_value() {
echo "$1" | grep -oP '(?<="'$2'":")[^"]*'
}
# Process each JSON object
IFS=$'\n' json_objects=($(echo "$JSON_CONTENTS" | tr -d '[],'))
for obj in "${json_objects[@]}"; do
projectName=$(extract_value "$obj" "projectName")
jobName=$(extract_value "$obj" "jobName")
version=$(extract_value "$obj" "version")
csvLine="${projectName},${jobName},${version}\n"
csvContent+="$csvLine"
done
# Write CSV content to a file
echo -e "$csvContent" > module_list.csv
此脚本依赖于 grep 和 tr 等基本 shell 实用程序,使其更便携,但比使用 jq 稍微不太健壮。
#!/bin/bash
# Read JSON content from a parameter or file
JSON_CONTENTS=$(cat <<EOF
[
{"projectName": "Project1", "jobName": "Job1", "version": "1.0"},
{"projectName": "Project2", "jobName": "Job2", "version": "2.0"}
]
EOF
)
# Initialize CSV content
csvContent="projectName,jobName,version\n"
# Process JSON content
json_objects=$(echo "$JSON_CONTENTS" | tr -d '\n' | sed 's/},{/}\n{/g' | tr -d '[]')
while IFS= read -r obj; do
projectName=$(echo "$obj" | sed -n 's/.*"projectName": *"\([^"]*\)".*/\1/p')
jobName=$(echo "$obj" | sed -n 's/.*"jobName": *"\([^"]*\)".*/\1/p')
version=$(echo "$obj" | sed -n 's/.*"version": *"\([^"]*\)".*/\1/p')
csvLine="${projectName},${jobName},${version}\n"
csvContent+="$csvLine"
done <<< "$json_objects"
# Write CSV content to a file
echo -e "$csvContent" > module_list.csv
# Display the CSV content (optional)
cat module_list.csv