Мне нужно передать некоторый текст, который включает пробелы и другие символы, в сценарий, выполняемый 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?
Спасибо!