Je fais un script shell dont voici un bout qui vaut valeur de test, car ma boucle plante :
#!/bin/sh
uid=50001
while [ `grep $uid /etc/passwd` ]
do
uid=`expr $uid + 1`
done
echo $uid
Mon but est donc simplement de déterminer si l'uid 50001 existe dans le /etc/passwd, et d'incrémenter cette valeur si la réponse est oui.
le seul problème c'est que ça plante si l'enregistrement qui contient cette valeur a un champ commentaire avec des espaces.
Exemple de l'erreur:
./test.sh: line 5: [: SKTW8471:x:50001:50001:test: unary operator expected
50001
La ligne en question vaut normalement:
# grep 50001 /etc/passwd
SKTW8471:x:50001:50001:test comment:/common/OS:/bin/bash
je n'arrive pas trop à voir comment régler le problème alors si quelqu'un avait une idée ... merci !
# et $? ?
Posté par Val1472 . Évalué à 1.
uid=500
grep $uid /etc/passwd > /dev/null
while [ $? -eq 0 ]
do
uid=`expr $uid + 1`
grep $uid /etc/passwd > /dev/null
done
echo $uid
[^] # Re: et $? ?
Posté par Cédric Hammer . Évalué à 1.
je ne suis pas encore très bon en script shell ... je n'ai donc pas encore bon nombre de réflexes qu'il faudrait que j'ai ... mais ça viendra ! :)
[^] # Re: et $? ?
Posté par Obsidian . Évalué à 2.
# Manque les "
Posté par sylvain cresto (site web personnel) . Évalué à 3.
while [ "`grep $uid /etc/passwd`" ]
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.