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!
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 command
et renvoie la sortie standard: enregistrez-la simplement dans une variable.
Votre commande:
ls -l /var/spool | wc -c > size
créera un fichier nommé size
dans le répertoire en cours (contenant le numéro et une nouvelle ligne).
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)