0

csh で次の bash 関数を使用できるように、csh エイリアスを作成しています。

function up( )
{
    LIMIT=$1
    P=$PWD
    for ((i=1; i <= LIMIT; i++))
    do
        P=$P/..
    done
    cd $P
    export MPWD=$P
}

(上記の bash 関数はhereから盗みました)

私はこれを書いた:

alias up 'set LIMIT=$1; set P=$PWD; set counter = LIMIT;  while[counter!=0] set counter = counter-1; P=$P/.. ; end cd $P; setenv MPWD=$P'

ただし、次のエラーが発生します。

while[counter!=0]: No match.
P=/net/devstorage/home/rghosh/..: Command not found.
end: Too many arguments.

私のスクリプトは意図したとおりに機能しません。ここからcshを読んでいます。

私は csh の専門家ではありません。上に書いたのは私の最初の csh スクリプトです。私が間違っていることを教えてください。

4

2 に答える 2

2

これを行うこともできます

alias up 'cd `yes ".." | head -n\!* | tr "\n" "\/"`'

yes ".."..文字列を無期限に繰り返します。headは、エイリアスを呼び出すときに引数として渡された数値に切り捨て ( 渡され!*た引数に展開されます; と同様$@) tr、改行を に変換し/ます。

Radical7 の答えはもっときちんとしているようです。ただし、tcshでのみ機能します(まさにあなたが望んでいたものです)。これは、シェルに関係なく機能するはずです

于 2013-04-16T08:08:34.293 に答える
1

cshのrepeat機能が使える

alias up 'cd `pwd``repeat \!^ echo -n /..`'

ループは必要ありません (これは便利whileです。tcsh の構造は非常に扱いにくいように思われるからです)。

于 2013-01-25T14:10:39.993 に答える