Linux Shell Scripts – parte I

lunedì 14 dicembre 2009 alle 14:10 | Pubblicato su Installation and Configuration, Linux | Lascia un commento
Tag:

Sto cercando di migliorare le mie conoscienze di Linux e siccome mi capita di incontrare cose nuove che mi sembrano interessanti ho deciso prendere un po’ di appunti. In questo post mi dedico in particolare a dei costrutti utili per la costruzione di script con la shell bash, la shell di default sui sistemi linux che io uso solitamente (Suse, Red Hat e Oracle).

Comandi “builtin” della bash

La bash è piuttosto ricca di comandi cosiddetti “builtin” ovvero comandi che non sono implementati come programmi a se standi come  ad esmpio wc, du ecc. ma sono implementati nella shell stessa; un modo per vedere un elenco, e un aiuto, più comodo di “man bash” è il comando “help” che senza argomenti riporta la lista di tutti i comandi implementati dalla shell.

select

Il comando che ho scoperto e studiato oggi è select. In realtà come indicato dal comandi type (che è proprio un comando builtin della shell) select è una parola riservata della shell:

[oracle@oel54test11gR201 oracle]$ type -a type
type is a shell builtin
[oracle@oel54test11gR201 oracle]$ type -a select
select is a shell keyword

select è una parola riservata utilizzata per un costrutto strutturato così descritto dall’help:

[oracle@oel54test11gR201 oracle]$ help select
select: select NAME [in WORDS … ;] do COMMANDS; done
The WORDS are expanded, generating a list of words.  The
set of expanded words is printed on the standard error, each
preceded by a number.  If `in WORDS’ is not present, `in “$@”‘
is assumed.  The PS3 prompt is then displayed and a line read
from the standard input.  If the line consists of the number
corresponding to one of the displayed words, then NAME is set
to that word.  If the line is empty, WORDS and the prompt are
redisplayed.  If EOF is read, the command completes.  Any other
value read causes NAME to be set to null.  The line read is saved
in the variable REPLY.  COMMANDS are executed after each selection
until a break command is executed.

In sostanza è molto utile per script interattivi con cui si vuole richiedere una scelta fra diverse opzioni, riporto un esempio banale:


#!/bin/bash

PS3='quale?'
select sid in uno due tre quattro
do
echo $sid
break
done;

Ed ecco un esempio di esecuzione:

[oracle@oel54test11gR201 ~]$ ./test3.sh
1) uno
2) due
3) tre
4) quattro
quale?4
quattro
[oracle@oel54test11gR201 ~]$

Lascia un commento »

RSS feed for comments on this post. TrackBack URI

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Crea un sito o un blog gratuitamente presso WordPress.com.
Entries e commenti feeds.

%d blogger cliccano Mi Piace per questo: