Pagina 1 di 1
Dubbi Bash
Inviato: lun 8 mar 2010, 20:12
da RedSkull92
Sto leggendo qualche guida per imparare il bash.
Ho visto un pò di Slackbuild e ho visto alcune cose che mi hanno creato dei dubbi.
Eccoli quì:
Non poteva essere così ?
cosa cambia tra le 2 versioni ?
Cosa è meglio usare ?
Poi non ho capito l'utilità del comando strip.
Poi in molti sorgenti ho visto "requiredbuilder" ma io sulla mia slack 13 non trovo questo comando, a che serve ?
Grazie per le eventuali risposte !
Re: Dubbi Bash
Inviato: lun 8 mar 2010, 20:18
da ulisse89
Io ti posso rispondere solo a un paio di domande.
Requiredbuilder è un tool che dobbiamo installare noi pacchettizzatori ( e che puoi trovare anche te qui
http://stabellini.net/requiredbuilder.html ), che serve a calcolare le dipendenze di un pacchetto, prima di creare il package. Fa uso di ldd per calcolare le dipendenze, è molto utile anche se non è affidabile al 100%.
Strip è un comando che elimina i simboli di debug dai file binari (simboli che alla gente comune non servono), rendendoli di fatto più leggeri.
Re: Dubbi Bash
Inviato: lun 8 mar 2010, 20:30
da michelino
RedSkull92 ha scritto:Sto leggendo qualche guida per imparare il bash.
Non poteva essere così ?
e
( e non CWD=${pwd}) sono due modi per dire la stessa cosa, anche se ci sono problemi di compatibilità tra le diverse tipologie di shell e tra versioni diverse di shell dello stesso tipo
così come l'altro, significano che nel caso in cui la variabile TMP non sia impostata (ad esempio come variabile d'ambiente) TMP=/tmp/tgz, altrimenti TMP=variabile_già_impostata
mentre
imposta senz'altro la variabile, anche se c'è una variabile d'ambiente.
....o almeno io ricordo così

)))
Re: Dubbi Bash
Inviato: lun 8 mar 2010, 22:06
da RedSkull92
ok perfetto.
Uhm come mai mettere $(pwd) e non ${pwd} ?
cosa cambia ?
nella guida ho letto che () danno vita a subshell mentre {} no, è forse per questo ?
Re: Dubbi Bash
Inviato: lun 8 mar 2010, 23:43
da michelino
Sinceramente non conosco la "command substitution" con la sintassi
ma non sono un guru del bash scripting....aspetto risposte da persone più esperte; fermo restando che il codice scritto tra "( )" viene di certo eseguito in subshell.
Re: Dubbi Bash
Inviato: mar 9 mar 2010, 9:48
da ulisse89
$(pwd) è diverso da ${pwd}. Mentre il primo assegna alla variabile l'output di pwd ( uguale a CWD=`pwd` ), il secondo non ci mette niente.
Non ti so spiegare cosa faccia di preciso la forma tra parentensi graffe, ma ti posso dire che non la puoi usare per assegnare l'output dei comandi.
Re: Dubbi Bash
Inviato: mar 9 mar 2010, 9:50
da danix
mettendo il comando tra parentesi tonde stai dicendo di eseguire il comando e di dare il risultato del comando come valore alla variabile, quindi:
eseguirà il comando pwd e darà il risultato come valore della variabile $CWD...
mettendolo tra parentesi graffe invece non eseguirai il comando, quindi il valore della variabile sarà quello contenuto tra parentesi, nel nostro esempio:
la variabile $CWD avrà valore "pwd" che non è il massimo...

Re: Dubbi Bash
Inviato: mar 9 mar 2010, 9:55
da ulisse89
Danix, non credo neanche che assegni la stringa "pwd". Ho fatto una prova veloce dalla shell e CWD risulta vuota.
Re: Dubbi Bash
Inviato: mar 9 mar 2010, 10:11
da danix
hai ragione... my bad...
Re: Dubbi Bash
Inviato: mar 9 mar 2010, 10:18
da conraid
${pwd} è uguale a $pwd, si utilizza nei casi ambigui, per esempio con $pwd$pippo cosa vogliamo intendere?
$pwd e $pippo attaccate o la variabile pwd$pippo?
e se prendiamo un risultato da shell, e tanti atri casi?
allora facciamo ${pwd}${pippo} o ${pwd$pippo}
nei casi in cui la variabile prende i valori da un comando, è utile anche usare le graffe "$pwd", in modo da comprendere gli "spazi"
Re: Dubbi Bash
Inviato: mar 9 mar 2010, 15:20
da RedSkull92
ah ok gentilissimi.
Se avrò altre domande posterò quì così non apro millemila topic .
Re: Dubbi Bash
Inviato: mar 9 mar 2010, 17:03
da Mario Vanoni
conraid ha scritto:${pwd} è uguale a $pwd, si utilizza nei casi ambigui, per esempio con $pwd$pippo cosa vogliamo intendere?
$pwd e $pippo attaccate o la variabile pwd$pippo?
e se prendiamo un risultato da shell, e tanti atri casi?
allora facciamo ${pwd}${pippo} o ${pwd$pippo}
nei casi in cui la variabile prende i valori da un comando, è utile anche usare le graffe "$pwd", in modo da comprendere gli "spazi"
Esatto, ma esistono casi ambigui.
Metti che vuoi copiare il contenuto di pippo a pippo con estensione 1:
cp $pippo $pippo1 non funziona
cp $pippo ${pippo}1 funziona
Vecchia regola della Bourne Shell:
mettere _sempre_ le graffe, non si avra` _mai_ ambiguita`/problemi.