2017-02-15 4 views
1

シェルスクリプト用のgitブランチを選択して、xargsでダイアログにリストを渡すときに引用符をエスケープするときに問題が発生しました。 誰かが問題を見つけて解決するのに役立つかもしれませんか? 私は、ダイアログを作成するには、次のコマンドを使用しています:ダイアログ付きGit分岐ピッカー:引用符をエスケープする

git for-each-ref --sort=-committerdate refs/heads/ --format='"%(refname:short)" "%(authorname): %(contents:subject) (%(committerdate:relative))"'|xargs -p -d'\n' dialog --menu \"Select a branch\" 0 0 0 

私はError: Expected 2 arguments, found only 1.代わりのダイアログを取得します。

+0

ここにスペースがありませんか? '-d '\ n'' –

+0

私はそれが必要ではないと信じています。 –

+0

どの部分がエラーを発生させますか? – smarber

答えて

0

おそらくxargsの引用によって不正行為をしている可能性があります。 私はそれがGNUパラレルで動作させることができます。

git for-each-ref --sort=-committerdate refs --format='%(refname:short) 
%(authorname): %(contents:subject) (%(committerdate:relative))' | parallel -r --tty -Xj1 dialog --menu \"Select a branch\" 0 0 0 

はい、「)は、短い」の後に改行あります。

+0

私はxargsの代わりにいくつかのパラレルを使用することを見ましたが、私の考えではその目的は達成しようとしているものとは異なります。私の場合、xargsが行うはずのダイアログのパラメータとして文字列の束を渡したいだけです。 –

+0

@ ska-ukあなたのコメントで言及したように、あなたの問題は 'xargs'のためにエスケープする必要のある文字が正しいことをしているためかもしれません。 GNU Parallelはデフォルトですべてを引用しているので、予期しない予期しない驚きを予測するのは簡単です。とにかく、私は 'xargs'で動作するようにしようとしましたが失敗しました。シェルコマンドの最大行の長さに達する可能性があるため、多くのオプションがある場合は両方とも失敗します。 –

関連する問題