OVH Cloud OVH Cloud

[newbie awk] print marche mais pas l'exec d'un prog

5 réponses
Avatar
Batman
bonjour, bonsoir à tous

voila je tente ceci :
$ grep -v "^#" /etc/fstab | grep -i "user=$USER" | awk -F " " '{ print $2 }'
/mnt/SMITH/www
/mnt/SMITH/ecsm
/mnt/SMITH/public/

mais si je fais
$ grep -v "^#" /etc/fstab | grep -i "user=$USER" | awk -F " " '{ /bin/mount
$2; }' && echo "coucou"
cela affiche " coucou", donc pas d'erreur à l'execution ?

mais si je fait un
$ mount
je vois pas mes trois point de montage (et un ll /mnt/SMITH/www/ me donne 0
fichier donc pas monté cela marche 'à la main')

je gaffé ou ? (j'ai fait le man awk et http://www.shellunix.com/awk.html)


--
Les fautes d'orthographes sont ma signature :-)
pour me répondre en BAL (mode antispam)
http://batman.dyndns.org/V2/Mail/?src=news.free

5 réponses

Avatar
Stephane Chazelas
2004-03-07, 12:42(+01), Batman:

bonjour, bonsoir à tous

voila je tente ceci :
$ grep -v "^#" /etc/fstab | grep -i "user=$USER" | awk -F " " '{ print $2 }'
/mnt/SMITH/www
/mnt/SMITH/ecsm
/mnt/SMITH/public/

mais si je fais
$ grep -v "^#" /etc/fstab | grep -i "user=$USER" | awk -F " " '{ /bin/mount
$2; }' && echo "coucou"
cela affiche " coucou", donc pas d'erreur à l'execution ?


/bin/mount pour awk, c'est "rien" divisé par la variable bin,
divisé par la variable mount.

Si tu veux executer quelquechose avec awk, il faut faire appel à
la fonction awk "system", qui elle meme fait appel à un shell.
Note que -F " " ne sert à rien puisque " " correspond au mode
par défaut de awk (note que " " est spécial et ne correspond pas
à séparer les champs par un seul espace [heureusement car dans
fstab, il y a souvent des tabulations ou plusieurs espaces entre
les champs]).

Attention, si tu as un utilisateur "steph" et un utilisateur
"stephane", grep -i user=steph va aussi te retourner les lignes
de l'utilisateur "stephane".

Essaie:

while read -r dev path type options rest <&3; do
case $dev in
"#"*) continue;;
esac
case $options in
*"user=$USER" | *"user=$USER,"*)
mount "$path";;
esac
done 3< /etc/fstab


--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]

Avatar
manu
Batman wrote:

$ grep -v "^#" /etc/fstab | grep -i "user=$USER" | awk -F " " '{ /bin/mount
$2; }' && echo "coucou"


Faut utiliser system() pour lancer une commande depuis awk, non?

--
Emmanuel Dreyfus
Un bouquin en français sur BSD:
http://www.eyrolles.com/php.informatique/Ouvrages/9782212112443.php3


Avatar
Batman

2004-03-07, 12:42(+01), Batman:

$ grep -v "^#" /etc/fstab | grep -i "user=$USER" | awk -F " " '{
/bin/mount $2; }' && echo "coucou"
cela affiche " coucou", donc pas d'erreur à l'execution ?


/bin/mount pour awk, c'est "rien" divisé par la variable bin,
divisé par la variable mount.


Ooooops ;-)

Me suis permis de modifier un test ci-dessous (spécifique mandrake 9.1 ou
spécifique moi même :-D)


Essaie:

while read -r dev path type options rest <&3; do
case $dev in
"#"*) continue;;
esac
case $options in
*"user=$USER" | *"user=$USER,"*)
*"user,user=$USER"* | "user=$USER,")

mount "$path";;
esac
done 3< /etc/fstab




ça marche nickel, tellement bien que je pense que je vais le mettre dans le
rc.local (en changeant le $USER, car au niveau de l'exec du rc.local le
$USER risque de pas être celui que je veux ;-) )

Merci

--
Les fautes d'orthographes sont ma signature :-)
pour me répondre en BAL (mode antispam)
http://batman.dyndns.org/V2/Mail/?src=news.free


Avatar
Batman

2004-03-07, 12:42(+01), Batman:

$ grep -v "^#" /etc/fstab | grep -i "user=$USER" | awk -F " " '{
/bin/mount $2; }' && echo "coucou"
cela affiche " coucou", donc pas d'erreur à l'execution ?


/bin/mount pour awk, c'est "rien" divisé par la variable bin,
divisé par la variable mount.


Ooooops ;-)

Me suis permis de modifier un test ci-dessous (spécifique mandrake 9.1 ou
spécifique moi même :-D)


Essaie:

while read -r dev path type options rest <&3; do
case $dev in
"#"*) continue;;
esac
case $options in


*"user,user=$USER"* | "user=$USER,")

mount "$path";;
esac
done 3< /etc/fstab




ça marche nickel, tellement bien que je pense que je vais le mettre dans le
rc.local (en changeant le $USER, car au niveau de l'exec du rc.local le
$USER risque de pas être celui que je veux ;-) )

Merci
--
Les fautes d'orthographes sont ma signature :-)
pour me répondre en BAL (mode antispam)
http://batman.dyndns.org/V2/Mail/?src=news.free


Avatar
Batman
aîe panique à bord l'annulation n'a pas été prise en compte j'avais oublié
qu'un mot entouré d'étoile était mis en gras comme ci-dessous :

/V/oici le mot en *gras* pour le lecteur '_full usenet_'

--
Les fautes d'orthographes sont ma signature :-)
pour me répondre en BAL (mode antispam)
http://batman.dyndns.org/V2/Mail/?src=news.free