System
Linux hosek 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Problem
Ich muss die Ausgabe als Befehle in einem Bash-Skript zum Speichern von Variablen erhalten.
Beispiel
sed -n '/# Main configuration./,/# Websites./p' webcheck-$category.cfg | sed '1,1d' | sed '$ d'
Dieser Befehl gibt folgende Zeilen zurück:
email_sender='[email protected]'
email_recipients='[email protected]'
Wie kann ich diese Ausgaben / Zeilen als Befehle im Skript lesen / ausführen? Wird diese Ausgabe in der Datei gespeichert und dann source
nur auf Befehl gelesen ?
Ich habe es | source
am Ende des Befehls versucht , aber es liest nur aus Dateien.
Ich habe es echo
am Anfang versucht , aber das hatte keine Wirkung.
Vielen Dank.
quelle
for var in email_sender email_recipient email_subject email_attachement etc ; do printf -v "${var}" '%s' "$(grep -oP $var'=\K.*' webcheck-$category.cfg)"; done
Dies entspricht jedoch nicht den "einfachen" Kriterien.Sie können die Prozessersetzung verwenden :
quelle
oder
Ausgabe:
[email protected] [email protected]
quelle
Bash Read Builtin handhabt solche Dinge gut.
read
Liest Zeilen von stdin in Variablen.-d ''
Deaktiviert die Leerzeichenaufteilung mit Ausnahme von Zeilenumbrüchen.-r
deaktiviert\
Fluchtwege.cmdA < <(cmdB)
funktioniert ähnlich wie cmdB | cmdA wird, außer in der vorherigen cmdA, in ~ dieser ~ Shell anstelle einer Subshell ausgeführt, die erforderlich ist, damit das Lesen wie erwartet funktioniert.quelle
var=value
?