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 plutôt assignée à une variable dans mon script pour que je puisse la réutiliser.
ce que je fais est d'obtenir la taille du fichier à partir d'un répertoire en utilisant les commandes ci-dessous:
ls -l /var/spool | wc -c
Cette commande m'obtient la taille du fichier en octets et affiche la sortie sous forme d'entier. Je souhaite obtenir cet entier affecté à une variable de mon goût afin de pouvoir le comparer à une autre variable plus tard
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
Dans tous les cas, 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!
la source
size=`ls -l /var/spool | wc -c`
. utilisez ce format dans votre réponse: "` `size =` ls -l / var / spool | wc -c` `` "sans guillemets;)$()
pour les raisons expliquées ici: stackoverflow.com/a/9449788/2907484 :-)ls -l /var/spool | wc -c > size_file
, vous pourriezread size_var < size_file
. (2) Voir aussi $ () peut-il toujours remplacer les astuces pour la substitution de commandes?Je préfère la solution offerte par la réponse de Rmano , mais si vous souhaitez utiliser uniquement la redirection:
la source
set -e
,set -o pipefail
etc.). Donc, si vous utilisez$(…)
votre script, il continuera toujours, alors qu'avec la redirection il peut être configuré pour échouer. (qui peut être ce que vous voulez ou non).