Comando set
lok
-
tisc0 -
tisc0 -
Hola,
he utilizado el comando set en un script, la parte del script es la siguiente:
#! /bin/sh
#
if [ -f /home/prj/itsec/.prjrc ]; then
echo " ftlog ftflag local-user site file"
else
echo "no encontrado"
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 lorsque j'exécute le script, je n'obtiens rien dans le echo
et que quelqu'un peut m'aider
Merci
he utilizado el comando set en un script, la parte del script es la siguiente:
#! /bin/sh
#
if [ -f /home/prj/itsec/.prjrc ]; then
echo " ftlog ftflag local-user site file"
else
echo "no encontrado"
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 lorsque j'exécute le script, je n'obtiens rien dans le echo
et que quelqu'un peut m'aider
Merci
10 respuestas
Hola,
El comando "set" en shell "sh" al menos sirve para posicionar parámetros y no para inicializar parámetros :
--
Z'@+...che.
El comando "set" en shell "sh" al menos sirve para posicionar parámetros y no para inicializar parámetros :
[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]$Además para inicializar una variable no debe haber espacio entre el nombre de tu variable, el signo igual y el valor de tu 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]$Para inicializar tus variables basta con darles su nombre seguido del signo igual y de su valor sin espacios, y eventualmente entre comillas si el valor contiene espacios o caracteres especiales :
VAR="Ceci est une variable"
--
Z'@+...che.
JP : Zen, mis Nuggets ! ;-) El saber solo es bueno si se comparte.
pero yo quiero que la variable $moi sea conocida no solo dentro del script sino también en otros lugares (exactamente como una variable de entorno: $path, $user, .........)
es por eso que he utilizado set
es por eso que he utilizado set
entonces ahí sí puedes hacer definitivamente una cruz sobre ello
una variable definida en un subproceso nunca es conocida por el shell padre, no hay forma
si quieres que sea conocida en el shell padre, en lugar de ejecutar tu archivo debes *sourcerlo* en el shell padre
es decir, si tu script se llama torgnole haces
. torgnole
en lugar de
./torgnole o torgnole
--
gnagnagna
una variable definida en un subproceso nunca es conocida por el shell padre, no hay forma
si quieres que sea conocida en el shell padre, en lugar de ejecutar tu archivo debes *sourcerlo* en el shell padre
es decir, si tu script se llama torgnole haces
. torgnole
en lugar de
./torgnole o torgnole
--
gnagnagna
Utilicé export pero no funcionó,
lo hice:
export nom=valeur
pero no funcionó, me da el siguiente error:
nom=valeur: is not an identifier
No sé cómo debo hacer para resolver este problema
lo hice:
export nom=valeur
pero no funcionó, me da el siguiente error:
nom=valeur: is not an identifier
No sé cómo debo hacer para resolver este problema
Intento incluso con este pequeño ejemplo:
#! /bin/sh
set moi=bonsoir
echo $moi
pero no funciona
¿sabes de dónde viene el error?
Gracias de antemano
#! /bin/sh
set moi=bonsoir
echo $moi
pero no funciona
¿sabes de dónde viene el error?
Gracias de antemano
Te dije que el comando set sirve para posicionar parámetros. ¡Bórralo!
--
Z'@+...che.
[jp@Mandrake tmpfs]$ cat script.sh #! /bin/sh moi=bonsoir echo $moi [jp@Mandrake tmpfs]$ sh script.sh bonsoir [jp@Mandrake tmpfs]$;-))
--
Z'@+...che.
JP : Zen, mis Nuggets ! ;-) El saber sólo es bueno si se comparte.
Hacer que una variable sea "permanente": ¿agregar la variable en .bashrc?
Para este fragmento de código que recalcitra... hay QUE QUITAR el set :
Para este fragmento de código que recalcitra... hay QUE QUITAR el set :
#! /bin/sh # Comentario que dice lo que hacemos if [ -f /home/prj/itsec/.prjrc ]; then echo " ftlog ftflag local-user site file" else echo "no encontrado" fi # Comentario que dice lo que hacemos PRJHOME="'echo $PWD | cut -d / -f 4-5'" echo $PRJHOME # Comentario que dice lo que hacemos PRJNAME='grep "NAME" /home/.prjrc | cut -f2 -d=' echo $PRJNAME
hola,
con comandos que escribes en el prompt como te mostré, funciona, pero en un archivo como el siguiente:
#! /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?
con comandos que escribes en el prompt como te mostré, funciona, pero en un archivo como el siguiente:
#! /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?