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:
-
csh
não suporta a construção$()
para a substituição de comando, use' '
. -
csh
não suporta a sintaxefor i ... do ... done
, useforeach i ... end
. -
csh
nã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}'