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