Changement de variables dans bash
Comment puis-je changer cette var ?
max=0;
min=20000000;
cat |while read
do
read a
if [[ $a -gt $max ]]
then
max=a`
fi
`if [[ $a -lt $min ]]
then
min=a
fi
done
echo $max
echo $min
Mon min et max sont toujours les mêmes, 0 et 2000000. Quelqu'un peut-il m'aider ? Je n'ai aucune idée.
Pour ceux d'entre nous qui ont raté votre question précédente, pouvez-vous fournir plus d'informations pour celui-ci. Ce var êtes-vous essayer de changer?
aussi
Ce qui devrait être
Double Possible de Une variable modifiée à l'intérieur d'une boucle while n'est pas souvenu
aussi
max=a
devrait être max=$a
, même avec min=a
devrait être min=$a
Ce qui devrait être
min
si toutes les valeurs sont supérieures à 20000000 ? Je suppose que min
et max
devrait être votre première valeur...Double Possible de Une variable modifiée à l'intérieur d'une boucle while n'est pas souvenu
OriginalL'auteur pkruk | 2012-05-01
Vous devez vous connecter pour publier un commentaire.
(Principales) problème avec votre script, c'est que le réglage de
min
etmax
qui se passe dans un shell interne est exécuté, pas votre coque principale. Ainsi, les modifications ne sont pas visibles après le pipeline est fait.Un autre, c'est que vous appelez de le lire deux fois - ce qui pourrait être prévu si vous voulez sauter une ligne, mais c'est un peu inhabituel.
Le dernier est que
min=a
jeux demin
àa
, littéralement. Vous voulez mettre à$a
.À l'aide de processus de substitution pour se débarrasser du premier problème, en supprimant les (peut-être) de l'onu-deuxième lecture, et fixant les attributions, votre code devrait ressembler à:
4ème problème: démotivé backticks dans le milieu du script, pas explicable par les débutants erreur. 🙂
Je suppose que ceux qui ont été le résultat d'une lutte avec la minoration de l'éditeur, n'est pas présent dans le code 🙂
En Bash (et Ksh et Zsh), je recommande cette forme:
if (( a > max ))
. Aussi, sicat
n'est pas un espace réservé pour autre chose, puis l'ensemble de la redirection et le processus de substitution peut être éliminé, car le script va lirestdin
par défaut de toute façon.OriginalL'auteur Mat