Ich mache eine einfache Shell für ein Projekt, und ich möchte, dass Argument-Strings genau wie in Bash geparst werden.Wie teile ich eine Argument-String Bash-Stil in Ruby?
foo bar "hello world" fooz
Sollte sich:
["foo", "bar", "hello world", "fooz"]
Etc. Bisher wurde CSV::parse_line
, die Einstellung der Spalte Trenn " "
und .compact
die Ausgabe Ich habe mit ing. Die Probleme sind, dass ich jetzt wählen muss, ob ich einfache Anführungszeichen oder doppelte Anführungszeichen unterstützen möchte. CSV
unterstützt nicht mehr als ein einzelnes Trennzeichen.
Python hat ein Modul für genau diese shlex
genannt:
>>> shlex.split("Test 'hello world' foo")
['Test', 'hello world', 'foo']
>>> shlex.split('Test "hello world" foo')
['Test', 'hello world', 'foo']
es irgendwelche in Ruby Modulen versteckt, die dies tun können? Irgendwelche Vorschläge für eine Lösung würden geschätzt.
Natürlich gibt es: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/shellwords/rdoc/Shellwords.html#method -c-Shellsplit. :) – squiguy