web-dev-qa-db-fra.com

Rediriger la sortie vers une variable?

Je suis intéressant de diriger la sortie de deux commandes vers une variable. Je ne veux pas que la sortie soit affichée à l'écran, mais assignée à une variable dans mon script afin que je puisse l'utiliser à nouveau.

ce que je fais est d'obtenir la taille du fichier d'un répertoire en utilisant les commandes ci-dessous:

ls -l /var/spool | wc -c

Cette commande me donne la taille du fichier en octets et affiche la sortie sous forme d'entier. Je suis intéressé à obtenir cet entier affecté à une variable de mon goût pour pouvoir le comparer ultérieurement à une autre variable

Cela ne semble pas fonctionner:

size = ls -l /var/spool | wc -c

La redirection fonctionnerait-elle?

Comme ça....

ls -l /var/spool | wc -c > size

Quoi qu'il en soit, je souhaite que cette sortie numérique soit affectée à une variable et ne soit pas affichée à l'écran.

Toutes les suggestions sont les bienvenues!

8
Justin

Cela semble assez simple.

romano@RRyS:~$ size=$(ls -l /var/spool | wc -c)
romano@RRyS:~$ echo $size
476

La syntaxe du shell $(command) exécute commandet renvoie la sortie standard: enregistrez-la simplement dans une variable.

Votre commande:

ls -l /var/spool | wc -c > size 

créera un fichier nommé sizedans le répertoire en cours (contenant le numéro et une nouvelle ligne).

11
Rmano

Je préfère la solution proposée par réponse de Rmano , mais si vous souhaitez utiliser uniquement la redirection:

read size < <(ls -l /var/spool | wc -c)
6
Radu Rădeanu