Ich bin ein Neuling zu bash und ich versuche, ein Skript zu schreiben, Wartung auf einem LXC-Host zu tun, und es ist Container, die Sie in meinem github project finden können. Im Moment versuche ich die Namen der Container in zwei Arrays zu bekommen: $ active_containers und $ inactive_containers. Der reguläre Ausdruck, den ich gebaut habe basiert auf der folgenden:Bash-Skript mit regulärem Ausdruck
Dies erfordert, dass alle Containernamen zu:
- zwischen 1 und 63 Zeichen lang
- ausschließlich aus alphanumerischen Zeichen gemacht werden und Bindestriche
- nicht mit einem numerischen Zeichen oder Bindestrich beginnt
- nicht mit einem Bindestrich enden
Ich weiß, dass meine Regex noch nicht perfekt ist, sie sucht nach 3-63 Zeichen.
Mein test.sh:
#!/bin/bashbased
active_containers="$(lxc list -c ns | grep RUNNING)"
echo $active_containers
findcontainers='\b(a-zA-Z{1}a-zA-Z0-9\-{,61}a-zA-Z0-9{1})\b'
echo $active_containers | sed -e $findcontainers
echo "Containers found: $active_containers"
FYI: die Ausgabe des Befehls "lxc Liste -c ns":
+-------------+---------+
| NAME | STATE |
+-------------+---------+
| linuxserver | RUNNING |
+-------------+---------+
| websites | RUNNING |
+-------------+---------+
aktuelles Ergebnis:
| linuxserver | RUNNING | | websites | RUNNING |
sed: -e expression #1, char 37: unterminated address regex
Das Ergebnis I Ich möchte:
$active_containers(0): "linuxserver"
$active_containers(1): "RUNNING"
$active_containers(2): "websites"
$active_containers(3): "RUNNING"
Ich habe durch Stackoverflow und Handbücher von (e) grep suchen, sed und awk aber nicht finden können, was ich falsch mache ..
Meine bescheidene Entschuldigungen, wenn ich eine doppelte Frage gemacht haben .
bearbeiten:
Ich würde dankbar schätzen, wenn jemand mir sagen könnte, was an meiner Frage falsch ist, verdient eine -1. Ich weiß nicht, was zu beheben/verbessern ...
sollte wahrscheinlich sein '„$ findcontainers“' bare Variablen sind in der Regel ein Fehler – Jasen
Was genau Sie mit Ihrem 'sed' zu erreichen versuchen? – PesaThe
@PesaThe Ich versuche, die Namen der Container zu isolieren, so dass mein Skript Befehle an die Container senden und Dateien in und aus den Containern ziehen/schieben kann. –