use mulitple reference rpc
This commit is contained in:
69
multicurl.sh
Executable file
69
multicurl.sh
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
|
||||
# echo "$@"
|
||||
|
||||
urls=()
|
||||
options=()
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--url)
|
||||
urls+=("$2")
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
options+=("$1")
|
||||
shift 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ ${#urls[@]} -eq 0 ]]; then
|
||||
echo "No URLs provided"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
original_output=""
|
||||
temp_file=""
|
||||
|
||||
for i in "${!options[@]}"; do
|
||||
if [[ "${options[i]}" == "-o" ]]; then
|
||||
output_file="${options[i+1]}"
|
||||
temp_file=$(mktemp)
|
||||
|
||||
options[i+1]="$temp_file"
|
||||
original_output="$output_file"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
output=""
|
||||
for url in "${urls[@]}"; do
|
||||
#echo "curl -s ${options[@]} $url"
|
||||
output=$(eval "curl -s ${options[@]@Q} '$url'")
|
||||
if [[ $? -eq 0 ]]; then
|
||||
|
||||
if cat "$temp_file" | jq -e 'has("error")' > /dev/null 2>&1; then
|
||||
continue # Try the next URL
|
||||
fi
|
||||
|
||||
if [ -n "$original_output" ]; then
|
||||
#echo "$(cat $temp_file)"
|
||||
cat "$temp_file" > "$original_output"
|
||||
fi
|
||||
|
||||
echo "$output"
|
||||
exit 0
|
||||
else
|
||||
continue
|
||||
fi
|
||||
done
|
||||
|
||||
# Write the final output to the original output file if specified
|
||||
if [ -n "$original_output" ]; then
|
||||
cat "$temp_file" > "$original_output"
|
||||
fi
|
||||
|
||||
# Print the output to stdout
|
||||
echo "$output"
|
||||
exit 1
|
||||
Reference in New Issue
Block a user