Ich habe eine Freiform-Zeichenkette, die ich in bash sanieren muss, um sichere und nette Dateinamen zu erzeugen.Wie man eine Schnur in der Bash saniert?
Beispiel:
STAGE_NAME="Some usafe name 2/2#"
Erwartete hygienisiert Ergebnis“
"some-unsafe-name-2-2"
Logic:
- Klein Zeichen
- ersetzen alle nicht unterstützten oder unsichere Zeichen mit
dash
(inklusive Leerzeichen) - entfernen dupliziert Striche
- keine Striche aus Präfix oder Suffix
Einsatz externer Tools entfernen wie sed, so lange darf sie tragbar sind (nicht Optionen, die nicht auf BSD verfügbar sind/OSX/...).
Tun Sie auch Möchte "STAGE_NAME ='? – Cyrus
Erster Gedanke (ungetestet): 'STAGE_NAME = $ (echo $ STAGE_NAME | tr '[: oberer:]' '[: niedriger:]' | sed -e 's/[^ $ SAFE_CHARS]/-/g' -e '/ -/-/g') 'wobei' $ SAFE_CHARS' eine Zeichenkette ist, die Ihre Definition von sicheren Zeichen enthält (ansonsten sind alle Zeichen außer '\ 0' und '/' erlaubt, AFAIK). Welches Format erwarten Sie für 'Präfix' und 'Suffix'? – 0x5453
* murren * (re: versuchen, die Daten zu reparieren, anstatt zu versuchen, den Code zu reparieren, der nicht mit beliebigen Daten sicher umgehen kann). (Aber nichts gegen mich, ich kippe bei Windmühlen). –