Ich habe ein Skript, liest einige Eingabe-Informationen, Zeile für Zeile, dann geht in Schleife, und dann, innerhalb der Schleife, erstellt JSON-Dateien mit einigen erweiterten Variablen basierend auf Informationen, die es nimmt von Eingangsinformationen ab, die von Zeit zu Zeit unterschiedlich sind.Bash Hilfe mit EOF innerhalb einer While-Schleife
Das Problem, ist, dass, wenn ich Katze & EOF benutze, bricht es die while-Schleife und liest nur erste Zeile aus Eingabeinformationen. Können Sie beraten, wie Skript neu zu schreiben, um nicht zu brechen, während Schleife mit EOF-Funktion:
while IFS= read -r snmp_cred; do
echo appliance $ADDM_address and $snmp_cred
snmp_ip=$(grep -E -o "([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})@" <<< $snmp_cred)
snmp_ip=${snmp_ip%?}
echo IP for snmp community is $snmp_ip
json_file=$DIR/cred.json
remote_dir=/some/remote/dir
cat <<EOF > $DIR/cred.json
{
"some",
"json,
}
EOF
[Here goes some another commands]
done <$DIR/input.txt
Das Problem ist, dass in JSON-Datei ich einige Variablen haben, und sie nicht ausdehnt, wenn ich Ihren Ansatz: –
Hier wird die json Code - \t \t { \t \t \t "ip_range": „$ snmp_ip “ \t \t \t "Typen": [ "snmp"], \t \t \t "description": "$ snmp_cred", \t \t \t "snmp.version": "v2c", \t \t \t "snmp.port": 161, \t \t \t "snmp.community": "$ snmp_cred", \t \t \t "snmp.retries": 3, \t \t \t "snmp.timeout": 2 \t \t} –
Ok, wenn ich jq verwende, gibt es mir Kompilierfehler: –