csh: redirecionando a saída de foreach

1

Em csh: Como eu redireciono a saída de um foreach -loop para um pipe?

Isso funciona, mas usa um arquivo temporário:

set tmpfile=/tmp/file                                                                                                         
true > $tmpfile                                                                                                               
foreach v ('set | awk -e '{print $1}' |grep -v prompt2');                                                                     
eval if'($?'$v' && ${#'$v'} <= 1) echo scalar'$v'="$'$v'"' >> $tmpfile                                                        
eval if'($?'$v' && ${#'$v'} > 1) echo array'$v'="$'$v'"' >> $tmpfile                                                          
end                                                                                                                           
cat $tmpfile | parallel --shellquote | perl -pe 's/^scalar(\S+).=/set $1=/ or s/^array(\S+).=(.*)/set $1=($2)/;'

Eu gostaria de me livrar do arquivo temporário e usar um pipe. Então, algo assim (não funciona):

( foreach v ('set | awk -e '{print $1}' |grep -v prompt2');                                                                   
eval if'($?'$v' && ${#'$v'} <= 1) echo scalar'$v'="$'$v'"'                                                                    
eval if'($?'$v' && ${#'$v'} > 1) echo array'$v'="$'$v'"'                                                                      
end ) | parallel --shellquote | perl -pe 's/^scalar(\S+).=/set $1=/ or s/^array(\S+).=(.*)/set $1=($2)/;'
    
por Ole Tange 04.10.2015 / 16:32

0 respostas

Tags