Mailinglist Archive: opensuse-es (1198 mails)
| < Previous | Next > |
Re: SPAM: Re: [suse-linux-s] estoy harto ¿Cómo se usan las comillas?
- From: "miguel gmail" <miguel.listas@xxxxxxxxx>
- Date: Tue, 25 Apr 2006 18:50:47 +0200
- Message-id: <578ebdde0604250950x49aa86a7h8e5c17f5a14e533d@xxxxxxxxxxxxxx>
Ni quito ni borro.
Me ha resultado estupendo. Lo he entendido!!
On 4/25/06, Comventia Express <comventia@xxxxxxxxx> wrote:
> *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
Me ha resultado estupendo. Lo he entendido!!
On 4/25/06, Comventia Express <comventia@xxxxxxxxx> wrote:
> *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
| < Previous | Next > |