PRSHUB03: Programación de la Shell de Ubuntu
1. Considera las variables A=ana y B=mari. Visualiza su contenido con echo $A y echo$B.
Crea un subshell con la orden sh (compruébalo ejecutando ps). Vuelve a visualizar $A y
$B. Regresa al shell anterior con la orden exit. Comprueba que los valores de A y B
vuelven a ser accesibles.
2. Exporta las variables A y B. Repite las acciones de la práctica anterior y comprueba que los
valores de A y B son accesibles desde cualquier subshell.
3. Crea una variable N y asígnale el valor 3. arranca un nuevo shell con sh. Reasigna el valor
de N con 4. Regresa al shell padre con exit. Comprueba que el valor de N vuelve a ser 3.
4. Ejecuta las siguientes órdenes y analiza los resultados:
echo A B echo $B ola echo “$A $B”
echo $A $B echo $Bola echo ‘$A $B’
echo $A$B echo${B}ola echo \$A $A
echo $B$A echo ros$A echo `$A $B`
5. Añade a la variable A el contenido B y guarda el resultado en la variable C. Compruébalo.
6. Crea las variables A1=A A2=$A A3=”$A” A4=’$A’ A5=\$A y comprueba sus valores con la
orden echo.
7. Descubre el contenido-valor de las variables MAIL, PATH, TERM, PS1, PS2, HOME y
LOGNAME. Estas variables suelen crearse en el programa-archivo-guión de acceso al
sistema .profile y exportadas para su uso en toda la sesión.
8. cambia la variable de sistema PS1 por “Mande....”. Pulsa [Intro] varias veces o ejecuta
alguna orden. Reasigna a PS1 Su valor original.
9. Ejecuta las órdenes env y export y observa las diferencias.
10. Muestra en pantalla el contenido del archivo .profile y observa las variables definidas y
exportadas.
11. a) Ejecuta las órdenes clear, date, who y ls sucesivamente.
b) Incluye las cuatro órdenes en una sola línea separándolas por punto y coma (;).
c) Crea (con cat > q) un archivo q que contenga las cuatro órdenes citadas (una en cada
línea). Ejecuta el archivo q con la orden sh q.
1
PRSHUB03: Programación de la Shell de Ubuntu
12. Intenta ejecutar la nueva orden q sin precederla de sh. Observa el mensaje de sistema.
Modifica el atributo de ejecutable con la orden chmod +x q. Repite ahora la acción anterior.
13. Crea un archivo-guión shell con el nombre saludo que contenga la orden echo $1.
Ejecútala con los siguientes argumentos:
sh saludo Carlos
sh saludo Lucía Marta
sh saludo “Lucía Marta”
sh saludo (sin argumentos)
14. Modifica el archivo saludo anterior de la siguiente forma:
echo hola $1
echo hola $2
echo hola $3
Ejecútalo con los argumentos Carlos Lucía Pablo Marta. Añade a saludo las líneas
siguientes:
echo El nombre del guión es $0
echo El conjunto de argumentos es $*
Vuelve a ejecutarlo con los mismos argumentos.
15. Ejecuta el guión anterior con los argumentos Carlos Lucia “Pablo Marta”. Analiza el efecto
de las comillas dobles.
16. Crea el siguiente guión shell y llámalo cuenta:
echo “Número $1 . Total $*”
shift
echo “Número $1 . Total $*”
shift
echo “Número $1 . Total $*”
Ejecútalo con la línea de órdenes sh cuenta 1 2 3 4 5
17. Se pueden incluir en un guión shell más de 9 argumentos en variables posicionales?
18. Crea el siguiente guión shell saludo2:
clear
read nombre
banner Hola $nombre
Ejecútalo con un solo argumento, con dos argumentos separados por un espacio y con
varios argumentos agrupados entre comillas dobles.
2
PRSHUB03: Programación de la Shell de Ubuntu
19. Ejecuta las siguientes operaciones aritméticas con la orden expr:
3+2 3*5 12 / 4 7*4/2
3+2+5 17 * 6 4 * 8 / 24 * 7 / 2
3+5–2 3+2*5 8 / 2 * 47 / 2 * 4
Nota: Recuerda que el asterisco * es un carácter especial. Para que no sea interpretado
por el shell debe ir precedido por una barra invertida \. Ejemplo: 4 \* 9 La orden expr no
considera decimales.
20. Ejecuta las siguientes operaciones aritméticas con la orden expr:
8/2 8%2 17 / 3 17 % 3
21. Crea las variables I=2, J=3. Con la orden expr asigna a la variable K la suma de I y J e
incrementa en 1 el valor de I. Compruébalo.
22. La orden expr no admite paréntesis para alterar la prioridad de las operaciones. ¿Cómo
calcularías (3+5)/2?
Nota: Las expresiones encerradas entre acentos graves (`) son evaluadas y sustituido su
valor resultante antes de proceder a evaluar el resto de la línea de órdenes.
23. Elabora un guión shell que solicite dos números enteros (precio y cantidad) y muestre el
importe total aplicando un IVA del 6% (sin tener en cuenta decimales).
24. Modifica el programa anterior para que muestre un mensaje de solicitud para cada dato.
Consigue que no se produzca un salto de línea entre el mensaje de solicitud y la
introducción del dato.
25. Realiza un guión shell que solicite un número y muestre el resto de dividirlo entre 2 (será 0
para los pares y 1 para los impares).
26. Crea un guión shell que solicite dos números enteros y muestre su cociente con tres
decimales.
27. Realiza un guión shell que solicite tres números y muestre la suma acumulada, el producto
acumulado y el valor medio.
28. Modifica el guión shell de la práctica anterior para mostrar también el resto despreciando
en el valor medio. Añade una línea para obtener el valor medio con cuatro decimales.