Commande set
lok
-
tisc0 -
tisc0 -
salut,
j'ai utilise la commande set dans un script, la partie du script est la suivante:
#! /bin/sh
#
if [ -f /home/prj/itsec/.prjrc ]; then
echo " ftlog ftflag local-user site file"
else
echo "non trouve"
fi
set PRJHOME = `echo $PWD | cut -d / -f 4-5`
#set PRJHOME = `echo $PWD | awk -F / '{ print "/"$4"/"$5 }'`
echo $PRJHOME
#x = `echo "/"$PRJHOME1`
#echo $x
set PRJNAME = `grep "NAME" /home/gmira/*/.prjrc | cut -f2 -d=`
echo $PRJNAME
mais lorseque j'execute le script, j'obtient rien dans le echo
ect ce que quelqu'un peut m'aider
Merci
j'ai utilise la commande set dans un script, la partie du script est la suivante:
#! /bin/sh
#
if [ -f /home/prj/itsec/.prjrc ]; then
echo " ftlog ftflag local-user site file"
else
echo "non trouve"
fi
set PRJHOME = `echo $PWD | cut -d / -f 4-5`
#set PRJHOME = `echo $PWD | awk -F / '{ print "/"$4"/"$5 }'`
echo $PRJHOME
#x = `echo "/"$PRJHOME1`
#echo $x
set PRJNAME = `grep "NAME" /home/gmira/*/.prjrc | cut -f2 -d=`
echo $PRJNAME
mais lorseque j'execute le script, j'obtient rien dans le echo
ect ce que quelqu'un peut m'aider
Merci
A voir également:
- Set linux
- Set-top box - Accueil - Box & Connexion Internet
- Linux reader - Télécharger - Stockage
- Toutou linux - Télécharger - Systèmes d'exploitation
- R-linux - Télécharger - Sauvegarde
- Backtrack linux - Télécharger - Sécurité
10 réponses
Salut,
La commande "set" en shell "sh" du moins sert à positionner des paramètres et non pas à initialiser des paramètres :
La commande "set" en shell "sh" du moins sert à positionner des paramètres et non pas à initialiser des paramètres :
[jp@Mandrake tmpfs]$ set moi = bonsoir [jp@Mandrake tmpfs]$ echo $* moi = bonsoir [jp@Mandrake tmpfs]$ echo $2 = [jp@Mandrake tmpfs]$ echo $3 bonsoir [jp@Mandrake tmpfs]$De plus pour initialiser une variable il ne faut pas d'espace entre le nom de ta variable, le signe égale et la valeur de ta variable :
[jp@Mandrake tmpfs]$ set moi = bonsoir [jp@Mandrake tmpfs]$ echo $moi [jp@Mandrake tmpfs]$ moi=bonsoir [jp@Mandrake tmpfs]$ echo $moi bonsoir [jp@Mandrake tmpfs]$Pour initialiser tes variables suffit de donner leur nom suivi du signe égale et de sa valeur sans espaces, et éventuellement entre guillemets si la valeur contient des espaces ou des caractères spéciaux :
VAR="Ceci est une variable"
mais moi je veux que la variable $moi soit connu non a l'interieur du script seulemet mais aussi ailleurs (exactement comme une vaiable d'environnement : $path, $user, .........)
c'est pour cela que j'ai utilise set
c'est pour cela que j'ai utilise set
alors là tu peux faire définitivement une croix dessus
une variable définie dans un sous-shell n'est jamais connue par le shell parent, y a aucun moyen
si tu veux qu'elle soit connue dans le shell parent, au lieu d'exécuter ton fichier tu dois le sourcer dans le shell parent
càd si ton script s'appelle torgnole tu fais
. torgnole
au lieu de
./torgnole ou torgnole
une variable définie dans un sous-shell n'est jamais connue par le shell parent, y a aucun moyen
si tu veux qu'elle soit connue dans le shell parent, au lieu d'exécuter ton fichier tu dois le sourcer dans le shell parent
càd si ton script s'appelle torgnole tu fais
. torgnole
au lieu de
./torgnole ou torgnole
j'ajoute que non seulement il faudra le sourcer mais en plus, il faudra utiliser export
par ailleurs la variable ne sera définie QUE dans le shell où tu sources le fichier
mettons que tu ouvres deux shells (dans deux vt) et que tu sources le fichier dans un des deux, la variable ne sera pas définie dans l'autre pour autant
par ailleurs la variable ne sera définie QUE dans le shell où tu sources le fichier
mettons que tu ouvres deux shells (dans deux vt) et que tu sources le fichier dans un des deux, la variable ne sera pas définie dans l'autre pour autant
j'ai utilise export mais ca n'a pa marche,
j'ai fait:
export nom=valeur
mais ca n'a pas marche, il me donne l'erreur suivante:
nom=valeur: is not an identifier
je sais pas comment je dois faire pour resoudre ce probleme
j'ai fait:
export nom=valeur
mais ca n'a pas marche, il me donne l'erreur suivante:
nom=valeur: is not an identifier
je sais pas comment je dois faire pour resoudre ce probleme
j'ai meme essaye avec ce petit ewemple:
#! /bin/sh
set moi=bonsoir
echo $moi
mais ca ne marche pas
est ce que tu conais d'ou viens l'erreur?
Merci d'avance
#! /bin/sh
set moi=bonsoir
echo $moi
mais ca ne marche pas
est ce que tu conais d'ou viens l'erreur?
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je t'ai dit la commande set sert à positionner des paramètres. Vires là !!!
[jp@Mandrake tmpfs]$ cat script.sh #! /bin/sh moi=bonsoir echo $moi [jp@Mandrake tmpfs]$ sh script.sh bonsoir [jp@Mandrake tmpfs]$;-))
Rendre "permanente" une variable : ajouter la variable dans .bashrc ?!
Pour ce bout de code qui récalcitre... il FAUT ENLEVER le set :
Pour ce bout de code qui récalcitre... il FAUT ENLEVER le set :
#! /bin/sh # Commentaire qui dit ce que l'on fait if [ -f /home/prj/itsec/.prjrc ]; then echo " ftlog ftflag local-user site file" else echo "non trouve" fi # Commentaire qui dit ce que l'on fait PRJHOME="'echo $PWD | cut -d / -f 4-5'" echo $PRJHOME # Commentaire qui dit ce que l'on fait PRJNAME='grep "NAME" /home/.prjrc | cut -f2 -d=' echo $PRJNAME
salut,
avec des commaneds tapes au prompt comme tu m'as montre, ca marche , mais dans un fichier comme le suivant:
#! /bin/sh
#
if [ -f /home/prj/itsec/.prjrc ]; then
echo " ftlog ftflag local-user site file"
else
echo "non trouve"
fi
set PRJHOME="`echo $PWD | cut -d / -f 4-5`"
echo $PRJHOME
set PRJNAME=`grep "NAME" /home/.prjrc | cut -f2 -d=`
echo $PRJNAME
ca marche pas!!!!!!
je sais pas pk?
avec des commaneds tapes au prompt comme tu m'as montre, ca marche , mais dans un fichier comme le suivant:
#! /bin/sh
#
if [ -f /home/prj/itsec/.prjrc ]; then
echo " ftlog ftflag local-user site file"
else
echo "non trouve"
fi
set PRJHOME="`echo $PWD | cut -d / -f 4-5`"
echo $PRJHOME
set PRJNAME=`grep "NAME" /home/.prjrc | cut -f2 -d=`
echo $PRJNAME
ca marche pas!!!!!!
je sais pas pk?