Как передать аргументы в кавычках в GNU Parallel

Мне нужно передать некоторый текст, который включает пробелы и другие символы, в сценарий, выполняемый GNU Parallel.

Вот очень простой пример:

$ seq 1 3 | parallel echo "Quoted ' (text)"

В приведенном выше примере будет выведено следующее:

sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file    

Однако, если я сделаю это, все будет работать:

seq 1 3 | parallel echo "\"Quoted ' (text)\""

Я запускаю это из сценария python, поэтому перед передачей Аргументы Я дважды цитирую их в сценарии, например:

args = ["Some arg", "Another arg", "etc."]
args = ' '.join(pipes.quote(pipes.quote(arg)) for arg in args)

Но это не похоже на чистое решение.

Кто-нибудь знает лучший способ передачи аргументов в GNU Parallel?

Спасибо!

12
задан chaimp 22 November 2011 в 16:22
поделиться