Sto creando una semplice shell per un progetto e voglio analizzare le stringhe degli argomenti proprio come in Bash.Come dividere una stringa argomento in stile Bash in Ruby?
foo bar "hello world" fooz
dovrebbe diventare:
["foo", "bar", "hello world", "fooz"]
Etc. Finora ho usato CSV::parse_line
, impostare il separatore di colonna per " "
e .compact
ing l'uscita. Il problema è che ora devo scegliere se voglio supportare citazioni singole o doppie virgolette. CSV
non supporta più di un singolo carattere di delimitazione.
Python ha un modulo proprio per questo chiamato shlex
:
>>> shlex.split("Test 'hello world' foo")
['Test', 'hello world', 'foo']
>>> shlex.split('Test "hello world" foo')
['Test', 'hello world', 'foo']
ci sono eventuali nascosta costruito in moduli di Ruby che possono fare questo? Qualsiasi suggerimento per una soluzione sarebbe apprezzato.
naturalmente c'è: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/shellwords/rdoc/Shellwords.html#method -c-shellsplit. :) – squiguy