A primeira coisa que você deve saber sobre o script em csh é que ele é geralmente um muito má ideia . Dito isto, se você insistir, os problemas com o seu script são:
-
cshnão suporta a construção$()para a substituição de comando, use' '. -
cshnão suporta a sintaxefor i ... do ... done, useforeach i ... end. -
cshnão faz manipulação de strings como"${elapse%:*}". Você terá que contornar isso usando alguma outra ferramenta. - Não sei como obter
[para trabalhar comcsh(mas provavelmente é possível), como alternativa, useif.
Então, uma versão funcional do seu script em csh seria:
#!/bin/csh
set ALTER = "$1"
set NAME = "$2"
foreach pr ('pgrep "$NAME"')
set elapse = 'ps -o etime= -p "$pr" | cut -d: -f1'
if ( "$elapse" > "$ALTER" ) echo "$pr"
end
Falando sério, não faça script em csh , isso só causará dor. Especialmente desde que tudo que você realmente precisa é:
ps -o pid=,etime= -p $(pgrep $NAME) | cut -d: -f1 |
awk -vval="$ALTER" '$2>val{print $1}'