8 votes

Retourner deux variables en awk

Pour le moment, voici ce que je fais

ret=$(ls -la | awk '{print $3 " "  $9}')
usr=$(echo $ret | awk '{print $1}')
fil=$(echo $ret | awk '{print $2}')

Le problème est que je n'exécute pas un ls Je lance une commande qui prend du temps, pour que vous puissiez comprendre la logique.

Existe-t-il un moyen de configurer la valeur de retour pour qu'elle définisse deux valeurs externes, comme par exemple

ls -la | awk -r usr=x -r fil=y '{x=$3; y=$9}'

De cette façon, la commande sera exécutée une fois et je peux la réduire à une seule ligne.

2voto

glenn jackman Points 69748

Vous pouvez utiliser un tableau bash ou les paramètres positionnels comme lieu de stockage temporaire :

ret_ary=( $(command | awk '{print $3, $9}') )
usr=${ret_ary[0]}
fil=${ret_ary[1]}

set -- $(command  | awk '{print $3, $9}')
usr=$1
fil=$2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X