-1

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

ここで勝者になれる人はいますか?

4

1 に答える 1

2

これはdocopt repoでの問題チケットになりたいと思います。

私が思い出したように、ジェニーもかつてコーナーケースを抱えていました. docopt は引数を完全に逆解析するため、そうでなければ境界として使用されるスペースを (簡単に) 保護できないと思います。

于 2015-11-21T15:14:35.093 に答える