obligada > comp.os.* > comp.os.linux.programacion

cpcbegin (12-06-2008, 22:01)
¿Cómo podrían hacer un bash que introduciéndole un numero ordinal me
devuelta la letra ordinal?

Es para hacer un comando que pasandole dos parametros por ejemplo 2 3
me devuelva
hdb3

Gracias y un saludo.
sio2 (14-06-2008, 12:06)
El jueves, 12 de junio de 2008, a las 20:01 GMT, cpcbegin escribió:

> ¿Cómo podrían hacer un bash que introduciéndole un numero ordinal me
> devuelta la letra ordinal?


Hay muchas formas. A mí se me ocurre usando exclusivamente bash esta:

letras="abcdefg"
l=3
echo ${letras:l:1} #Devuelve "d"
John (14-06-2008, 12:23)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

>>>>> "cpcbegin" == cpcbegin <cpcbegin> writes:


cpcbegin> ¿Cómo podrían hacer un bash que introduciéndole un
cpcbegin> numero ordinal me devuelta la letra ordinal?

cpcbegin> Es para hacer un comando que pasandole dos parametros
cpcbegin> por ejemplo 2 3 me devuelva hdb3

La orden tr (ente otras) te puede servir. Se puede hacer más corto
usando awk o perl, pero es más 'pesado' para ejecutarlo:

<---> <---> <---> <---> <---> <---> <---> <---> <---> <---> <---> <--->
#!/bin/bash
ordinal_disco=2
ordinal_particion=3

case $ordinal_disco in
[1-9]) letra_disco=`echo $ordinal_disco | tr '[1-9]' '[a-i]'`
;;
1[0-9]) ordinal_disco=$(($ordinal_disco - 10))
letra_disco=`echo $ordinal_disco | tr '[0-9]' '[j-s]'`
;;
2[0-6]) ordinal_disco=$(($ordinal_disco - 20))
letra_disco=`echo $ordinal_disco | tr '[0-6]' '[t-z]'`
;;
*) echo "Valor de ordinal de disco invalido ($ordinal_disco)"
exit
;;
esac
case $ordinal_particion in
[1-9]) ;;
[1-9][0-9]*) ;;
*) echo "Valor de ordinal de particion invalido ($ordinal_particion)"
exit
;;
esac
particion="hd${letra_disco}${ordinal_particion}"
echo $particion
<---> <---> <---> <---> <---> <---> <---> <---> <---> <---> <---> <--->

Saludos. Iñaki.

- --
Get PGP/GPG Keys at
I use free software / Yo uso software libre
Temas Similares