1

多くの tcsh 構成スクリプトを使用するシステムで作業しているため、ほとんどのプログラムを tcsh で実行する必要があります。これを my に追加することで、これを自分で簡単にしようとしました~/.zshrc:

# run command in tcsh
function t() {
    tcsh -c "$@"
}

これは のようなものに対しては機能しますが、t lsに対しては失敗しt ls -l、エラーが発生し、引数としてではなくUnknown option: `-l' Usage: tcsh ...に渡されます。-ltcshls

渡された文字列を引用するにはどうすればよい$@ですか?

4

3 に答える 3

5

Zsh には、このための特別なオプションがあります (bash ではありません): ${(q)}:

tcsh -c "${(j. .)${(q)@}}"

. 最初の ( ) は、特別な意味を持つ配列項目${(q)@}内のすべての文字をエスケープし、2 番目の ( ) は配列を 1 つの文字列に結合します。$@${(j. .)…}

于 2012-12-11T18:50:44.517 に答える
2

これはうまくいくようです

function t {
  tcsh -c "$*"
}

そして、他の回答で見つけたものよりもずっと短いです;-)

[編集:]

わかりました、本当に引用符でひねくれたければ...関数をあきらめてエイリアスを使用するだけです(とにかくこれはおそらくより良い考えです)

alias t='tcsh -c'

[edit2:] Zsh http://zshwiki.org/home/scripting/argsでパラメーターを引用するさまざまな方法についての適切で要点の議論です。

于 2012-12-11T10:57:16.243 に答える
0

この答えには、私が必要としていたものがありました:

# run command in tcsh
function t() {
    C=''
    for i in "$@"; do
        C="$C \"${i//\"/\\\"}\""
    done;
    tcsh -c "$C"
}
于 2012-12-11T10:56:38.910 に答える