Newsgroup: it.comp.os.linux.iniziare
Titolo: Shell script - estrarre nome da file

Ciao a tutti. Cercando di scrivere uno script di shell mi sono 
imbatttuto nel seguente (banale) ostacolo: dato un file del tipo 
nomefile.ext dovrei estrarre nomefile e memorizzarlo in una variabile.
Qualcuno puņ aiutarmi ?
-- 
Seldon
"L'immaginazione e' piu' importante della conoscenza"
Alberto Unapietra

 estrarre nomefile e memorizzarlo in una variabile.
estrarre da cosa?
prima dici che il file è "dato", poi invece vuoi ricavarne il nome
(quindi il file non è dato)
cosa è veramente "dato"?
la directory dove sta il file? il suffisso del file?


Cercherò di spiegarmi meglio: data una stringa del tipo "nomefile.ext" 
vorrei memorizzare in una variabile la stringa "nomefile".
La stringa iniziale è nota solo a run-time (è un parametro posizionale 
dello script).


 Cercherò di spiegarmi meglio: data una stringa del tipo "nomefile.ext" 
"nomefile.ext" è il contenuto , non il tipo.
In ogni caso
il suffisso da togliere è sempre ".ext" ?
se sì:
ipotizzando che "nomefile.ext" sia il primo parametro, metto in nome
"nomefile"
nome=${1/".ext"/""}
ciao

 nome=${1/".ext"/""}
nome=`echo $1 | cut -d. -f1` funziona con qualsiasi estensione.
Ha però un difetto: scazza se il nomefile contiene un punto (es.
nome.file.txt).
-- 
« Se la pena è necessaria, non la si deve cancellare ;
se non è necessaria, non la si deve pronunziare. »
(Jeremy Bentham)

 nome.file.txt).
non č un difetto da poco.
cmq anche la mia soluzione ha un difetto, scazza se dentro nomefile ci
sono piů occorrenze di ".ext" (es: "buongiorio.extciao.ext")
la soluzione esatta č:
nome=${1%".ext"}
ciao

 
Certo che sei pignolo :-) Mea culpa, ma č anche vero che "del tipo" č 
una locuzione comune in italiano, anche se effettivamente ambigua in 
questo contesto.



Grazie (ad entrambi).


 questo contesto.
Nella programmazione le variabili hanno uno ed  uno solo: tipo , nome,
contenuto ed indirizzo, se iniziamo a chiamarne uno con il nome dell'altro
.... iniziamo proprio male!

 
Guarda, non volevo offendere, era solo una battuta.
So bene qual è l'importanza della precisione lessicale in questi casi 
(visto che mi occupo di matematica), ma mi sembrava che la mia richiesta 
  fosse chiara, anche se espressa in modo informale.
Comunque ribadisco il mio ringraziamento, visto che adesso il mio script 
funziona a dovere.
Ciao,


 nomefile...
man basename

 nome=${1%".ext"}
No, e` una soluzione non portabile da cerebroleso
man basename

 No, e` una soluzione non portabile da cerebroleso
anch'io ti voglio bene

 anch'io ti voglio bene
ROFL
:-)
-- 
Ciao.
Alessandro 
"Ubuntu" - an African word, meaning "Slackware is too hard for me".

 No, e` una soluzione non portabile da cerebroleso
  Visto che sei in vena di complimenti butto giu' quel che ho pensato 
io, almeno ti sfoghi per bene... ;-p
   Ma una cosa del genere:
echo $1 | rev | cut -d "." -f "2-" | rev 
  non funzionerebbe? Taglia tutti i  caratteri dopo 
l'ultimo punto, cosi' funziona per tutte le estensioni. Magari e' un 
tantino ingarbugliata... :°)
  Ora dimmi quel che vuoi, son quasi preparato al peggio. :-)
  Saluti,
 
-- 
Gianfranco Bertozzi
http://www.locandamilu.it
Linux User #183585