bash関数をcshエイリアスに変換中にエラーが発生しました。

bash関数をcshエイリアスに変換中にエラーが発生しました。

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機能を盗んだ。ここ)

私はこれを書いた:

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を読んでいますここ

ベストアンサー1

while1行でループを実行できるかどうかはわかりません。しかし、いくつかの修正可能なバグがあります。

  • while[counter!=0]そうする必要がありますwhile ($counter != 1) ( " "前後のスペースに注意してください!=)。
  • set counter = counter-1そうする必要があります@ counter = $counter – 1 ( " "前後のスペースに注意してください)。
  • P=$P/..set P=$P/..–– 以上でなければなりませんset P="$P/.."$Pスペースが含まれている場合)。
  • それは同じ理由でset P=$PWDなければならずset P="$PWD"、すべきcd $Pでなければならcd "$P"ないsetenv MPWD=$Pことを思い出させます。setenv MPWD="$P"
  • whileそして、ループが1行ですべて機能するようにするには、;おそらくend

おすすめ記事