Кавычки в аргументах для littler/docopt

Я хочу передать такие строки, как key="value", в небольшой сценарий. В bash у меня есть argtest.sh:

#!/bin/sh
echo $1

который я могу вызвать, сохранив кавычки из оболочки обратными слэшами, и я вижу их в выводе:

$ ./argtest.sh x=\"1\"
x="1"

Однако я не могу получить такие аргументы через littler/docopt. Вот мой тестовый скрипт:

#!/usr/bin/env r

doc <- "Usage: thing -t thing

-t --thing thing     some args
"

opt <- docopt::docopt(doc)
print(opt$thing)

target = 'x="1"'

if(opt$thing==target){
    message("Winner")
}else{
    message("Loser")
}

Простое обратное цитирование, как в примере с оболочкой, не работает:

$ ./argtest.r -t x=\"1\"
[1] "x=1"
Loser

И все остальное, что я пробовал, также терпит неудачу. Нравиться:

$ ./argtest.r -t 'x=\"1\"'
[1] "x=\\1\\"
Loser

Может ли кто-нибудь быть здесь победителем?


person Spacedman    schedule 21.11.2015    source источник


Ответы (1)


Я думаю, что это должно стать проблемой в репозитории docopt.

Насколько я помню, у Дженни тоже когда-то был угловой чемоданчик. Мне кажется, что docopt разбирает аргументы настолько тщательно, что вы не можете (легко) защитить пробелы, которые иначе используются в качестве разграничения.

person Dirk Eddelbuettel    schedule 21.11.2015