Erro ao converter uma função bash em um alias csh

3

Eu estou escrevendo um alias csh para que eu possa usar a seguinte função bash no meu csh:

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

(Eu roubei a função de bash acima de aqui )

Eu escrevi isto:

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'

No entanto, estou recebendo o seguinte erro:

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

e meu script não está funcionando como pretendido. Eu tenho lido no csh de aqui .

Eu não sou especialista em csh e o que escrevi acima é meu primeiro script csh. Por favor, deixe-me saber o que estou fazendo errado.

    
por Chani 21.01.2013 / 18:03

1 resposta

1

Não sei se é possível fazer um loop while em uma linha. Mas existem vários erros corrigíveis:

  • while[counter!=0] deve ser while ($counter != 1) (observe os espaços antes e depois do “ != ”).
  • set counter = counter-1 deve ser @ counter = $counter – 1 (observe os espaços antes e depois do " ").
  • P=$P/.. deve ser set P=$P/.. –– ou melhor ainda, set P="$P/.." (no caso de $P conter espaço (s).
  • O que me lembra, set P=$PWD deve ser set P="$PWD" , cd $P deve ser cd "$P" e setenv MPWD=$P deve ser setenv MPWD="$P" , tudo pelo mesmo motivo.
  • E, se você conseguir que o loop while em uma linha funcione, provavelmente precisará de um ; após o end .
por 22.01.2013 / 04:46

Tags