Buenas, estoy harto de pegármela siempre en le mismo sitio a la hora de scriptear. Cómo demonios se usan las comillas en unix? ´´ ` ` ' ' "" Conocéis alguna página que lo explique bien bien bien? Y con ejemplos. Muchas gracias. -- Saludos, miguel
Hola :) El Martes, 25 de Abril de 2006 18:02, miguel gmail escribió:
Buenas,
estoy harto de peg�rmela siempre en le mismo sitio a la hora de scriptear. C�mo demonios se usan las comillas en unix?
�� ` ` ' ' ""
Conoc�is alguna p�gina que lo explique bien bien bien? Y con ejemplos.
El "mejor" documento que he visto es este: http://www.tldp.org/LDP/abs/html/index.html Trae buenos ejemplos, ... HTH Rafa -- "Even paranoids have enemies." Rafa Grimán Systems Engineer Silicon Graphics Spain Santa Engracia, 120 - Planta Baja 28003 Madrid Spain Tel: +34 91 3984200 Tel: +34 91 3984201 Móvil: +34 628 117 940 http://www.sgi.com OpenWengo: rgriman Skype: rgriman
El Martes, 25 de Abril de 2006 12:02 PM, miguel gmail escribió:
Buenas,
estoy harto de pegármela siempre en le mismo sitio a la hora de scriptear. Cómo demonios se usan las comillas en unix?
´´ ` ` ' ' ""
Conocéis alguna página que lo explique bien bien bien? Y con ejemplos.
Así de una no recuerdo pero te explico. Consideremos la siguiente variable: export VARIABLE="Hola Miguel" Entonces: echo $VARIABLE , como te vá? Imprimirá: Hola Miguel , como te vá? al igual que: echo "$VARIABLE , como te vá?" Imprimirá: Hola Miguel , como te vá? Si embargo si haces esto: echo '$VARIABLE , como te vá?' Imprimirá: $VARIABLE , como te vá? (tal cual) las comillas invertidas `` sirven para sustituir un comando por lo que se encuentre dentro de ellas: export VARIABLE=`cat .bash_history` echo $VARIABLE y echo "$VARIABLE" tendran el mismo efecto que: cat .bash_history Pero con distinto formato de salida (pruébalo, es más fácil si lo ves con tus propios ojos ;-) Las primeras comillas que describes no las tengo y nunca las he visto. Disculpa mi ignorancia al respecto ^^ Espero te sirva de algo mi explicación algo básica. -- ************************ Hugo Sandoval Consultor http://www.softwarelibre.com.ve http://www.virtualnet.com.ve ************************ <*******> HACKER Persona que disfruta del reto intelectual de superar o rodear las limitaciones de forma creativa... El resto es simple delincuencia. <*******>
Las primeras comillas que describes no las tengo y nunca las he visto. Disculpa mi ignorancia al respecto ^^
Yo, obsesionado con las comillas, puse hasta las tildes como si fuesen comillas (sí, las de á, é, í, ó, ú) :D
Espero te sirva de algo mi explicación algo básica.
Sí, todas me han servido. Gracias! -- Saludos, miguel
*Comillas*
El uso de las comillas en la programación en shell es un tema bastante
importante. En los lenguajes de alto nivel normalmente las comillas sólo se
utilizan para las ristras, y no necesitan un aprendizaje especial para
usarlas: simplemente saber (en el lenguaje C, por ejemplo) que las comillas
simples son caracteres y que las comillas dobles requieren reservar memoria,
porque son ristras, o sea, punteros a caracteres.
*Tres tipos de comillas*
En la programación en shell en UNIX hay tres tipos de comillas útiles: La
comilla simple ('), la comilla doble (") y la comilla invertida (`). Cada
una tiene un propósito diferente, y se deben saber usar todas bien.
La comilla simple (') sirve para coger literales. Es importante darse cuenta
de que algo encerrado entre comillas simples siempre es un solo parámetro,
aunque sea una ristra vacía ('').
La comilla doble sirve para sustituir lo que hay dentro (valores de
variables, caracteres especiales), pero después de sustituir queremos
tratarlo como si estuviera encerrado entre comillas simples. Esto es útil
cuando, por ejemplo, tenemos que dar un parámetro a un programa, pero ese
parámetro es leído del teclado y no sabemos si la ristra es vacía. Si nos
tenemos que asegurar de que se trata como un parámetro, tendríamos que
encerrarlo entre comillas simples (recordemos que '' sigue siendo un
parámetro, aunque vacío), pero si lo encerramos entre comillas simples no se
sustituirá la variable. La forma de hacerlo es encerrando la variable entre
comillas dobles.
Veamos esto en el siguiente ejemplo:
x=100
y='500$x'
echo $y # Esto enseñará `500$x' en pantalla
y="500$x"
echo $y # Esto enseñará `500100' en pantalla
Las que quedan son las comillas invertidas (`). Estas se utilizan con
órdenes, y se sustituyen por la salida del programa que está entre las
comillas invertidas. Por ejemplo, si queremos almacenar en una variable el
número de usuarios que hay actualmente en el sistema, podemos hacer
usuarios=`who | wc -l`
Por si queda alguna duda, who dice los usuario que hay en el sistema,
poniendo uno en cada línea, y wc -l cuenta las líneas que tiene el texto que
le entre por la entrada estándar, sacando el número resultante a la salida.
hth
E Garrido
2006/4/25, miguel gmail
Buenas,
estoy harto de pegármela siempre en le mismo sitio a la hora de scriptear. Cómo demonios se usan las comillas en unix?
´´ ` ` ' ' ""
Conocéis alguna página que lo explique bien bien bien? Y con ejemplos.
Muchas gracias.
-- Saludos, miguel
-- Para dar de baja la suscripción, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com
Ni quito ni borro.
Me ha resultado estupendo. Lo he entendido!!
On 4/25/06, Comventia Express
*Comillas*
El uso de las comillas en la programación en shell es un tema bastante importante. En los lenguajes de alto nivel normalmente las comillas sólo se utilizan para las ristras, y no necesitan un aprendizaje especial para usarlas: simplemente saber (en el lenguaje C, por ejemplo) que las comillas simples son caracteres y que las comillas dobles requieren reservar memoria, porque son ristras, o sea, punteros a caracteres.
*Tres tipos de comillas*
En la programación en shell en UNIX hay tres tipos de comillas útiles: La comilla simple ('), la comilla doble (") y la comilla invertida (`). Cada una tiene un propósito diferente, y se deben saber usar todas bien.
La comilla simple (') sirve para coger literales. Es importante darse cuenta de que algo encerrado entre comillas simples siempre es un solo parámetro, aunque sea una ristra vacía ('').
La comilla doble sirve para sustituir lo que hay dentro (valores de variables, caracteres especiales), pero después de sustituir queremos tratarlo como si estuviera encerrado entre comillas simples. Esto es útil cuando, por ejemplo, tenemos que dar un parámetro a un programa, pero ese parámetro es leído del teclado y no sabemos si la ristra es vacía. Si nos tenemos que asegurar de que se trata como un parámetro, tendríamos que encerrarlo entre comillas simples (recordemos que '' sigue siendo un parámetro, aunque vacío), pero si lo encerramos entre comillas simples no se sustituirá la variable. La forma de hacerlo es encerrando la variable entre comillas dobles.
Veamos esto en el siguiente ejemplo:
x=100 y='500$x' echo $y # Esto enseñará `500$x' en pantalla y="500$x" echo $y # Esto enseñará `500100' en pantalla
aquí me ha pasado algo curioso. (Nota, estoy haciendo estas prácticas en cygwin, en windows, asi que en linux bien podría ser disitinto). Me he emocionado con esto, y me he dicho, `a ver si me sale multiplicar`: x=100 y="500 * $x" echo $y Y lo que me sale es algo muy feo, que viene del asterisco: echo * Application Data Bluetooth Software Configuración local Cookies Datos de programa Entorno de red Escritorio Favoritos GAN-GE~2.DOC Impresoras JCDSee.cfg Menú Inicio Mis documentos NTUSER.DAT NTUSER.DAT.LOG Nokia Phone Browser PUTTY.RND Plantillas Reciente SendTo TOSHIBA WLANProfiles XWin.exe.stackdump _viminfo amsn amsn_received geexbox-0 .98.7-en.i386.iso mplayer ntuser.ini workspace Qué demonios es el asterísco en Linux? (ya digo, esto me ha salido en cygwin con windows)
Las que quedan son las comillas invertidas (`). Estas se utilizan con órdenes, y se sustituyen por la salida del programa que está entre las comillas invertidas. Por ejemplo, si queremos almacenar en una variable el número de usuarios que hay actualmente en el sistema, podemos hacer
usuarios=`who | wc -l`
Por si queda alguna duda, who dice los usuario que hay en el sistema, poniendo uno en cada línea, y wc -l cuenta las líneas que tiene el texto que le entre por la entrada estándar, sacando el número resultante a la salida.
hth
Oh si, mucho. De verdad. Esto SI ha sido claro :-) Veamos si soy un alumno aventajado. Quiero hacer un script que me despierte con unas cancioncillas que guardo en un directorio, y lanzarlo con un cron. =========================== #!/bin/bash DIR=/home/miguel/musica canciones= `ls -la $DIR` mplayer $canciones =========================== Funcionaría este script? (en cuanto llegue a casa lo pruebo). El problema que veo es que al expandir el nombre de los ficheros en DIR, el nombre se va a cortar, ya que los ficheros tienen espacios en el título. :-? Cómo puedo hacer para que tome el nombre del fichero completo?? -- Saludos, miguel
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2006-04-25 a las 18:17 +0200, Comventia Express escribió:
*Comillas*
Me lo guardo :-) - -- Saludos Carlos Robinson -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFETl3xtTMYHG2NR9URArEpAJ9Zfxev1qnEfxdsnHYDYfnJvqPyMQCgg3Xe kmaWVmF0vCyVAl6h670acVo= =zXlb -----END PGP SIGNATURE-----
participants (5)
-
Carlos E. R.
-
Comventia Express
-
Hugo Sandoval
-
miguel gmail
-
Rafa Grimán