Por que não recebo a correspondência do conjunto de mensagens quando executo este script?

1
#! /usr/bin/tcsh -f

set ps_output = "'ps -u $user'"
@ i = 2

echo "$ps_output"

set ps_test

while ( $i <= $#ps_output )
    set line = ( $ps_output[$i] )
    if ( $line[4] != "ps" && $line[4] != "tcsh" && $line[4] != "zap" ) then
        set ps_test = ( $ps_test $i )
    endif
    @ i ++
end    

foreach i ( $ps_test )
    set line = ( $ps_output[$i] )
    set process_no = $line[1]
    if ( $line[4] == "HAL9000" || $line[4] == "HALos" || $line[4] == "HALshell" || $line[4] == "HALkeyboardDriv" || $line[4] == "HALdisplayDrive" || $line[4] == "HALdiskDriver" ) then
        kill -9 $process_no
    endif
end


exit 0

Então, continuo recebendo o erro "set no match" no meu script, mas não consegui encontrar qual conjunto é responsável por isso, quero dizer, mesmo quando comentei set ps_test , eu ainda recebo uma correspondência não definida, existe uma maneira de corrigir isso

    
por alkabary 22.01.2016 / 06:51

1 resposta

0

Uma alternativa é usar o pkill em uma linha, seja na linha de comando ou em um script.

pkill -9 -u $USER '(HAL9000|HALos|HALshell|HALkeyboardDrv||HALdisplayDrive|HALdiskDriver)'
    
por 23.01.2016 / 21:36