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)/;'