Repository 32bit  Forum
Repository 64bit  Wiki

Dubbi Bash

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Dubbi Bash

Messaggioda RedSkull92 » lun mar 08, 2010 20:12

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ì:
Codice: Seleziona tutto
CWD=`pwd`
TMP=${TMP:-/tmp/txz}
ARCH=${ARCH:-i486}


Non poteva essere così ?
Codice: Seleziona tutto
CWD=${pwd}
TMP=/tmp/txz
ARCH=i486


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 !
Avatar utente
RedSkull92
Linux 2.6
Linux 2.6
 
Messaggi: 554
Iscritto il: mar apr 21, 2009 16:25
Località: Palermo
Slackware: 64bit -current
Kernel: 3.5.4
Desktop: FluxBox

Re: Dubbi Bash

Messaggioda ulisse89 » lun mar 08, 2010 20:18

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.
Avatar utente
ulisse89
Packager
Packager
 
Messaggi: 644
Iscritto il: sab gen 17, 2009 12:53
Località: Bologna
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce

Re: Dubbi Bash

Messaggioda michelino » lun mar 08, 2010 20:30

RedSkull92 ha scritto:Sto leggendo qualche guida per imparare il bash.
Codice: Seleziona tutto
CWD=`pwd`
TMP=${TMP:-/tmp/txz}
ARCH=${ARCH:-i486}


Non poteva essere così ?
Codice: Seleziona tutto
CWD=${pwd}
TMP=/tmp/txz
ARCH=i486



Codice: Seleziona tutto
CWD=`pwd`

e
Codice: Seleziona tutto
CWD=$(pwd)

( 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

Codice: Seleziona tutto
TMP=${TMP:-/tmp/txz}

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
Codice: Seleziona tutto
TMP=/tmp/tgz

imposta senz'altro la variabile, anche se c'è una variabile d'ambiente.

....o almeno io ricordo così :-))))
Avatar utente
michelino
Staff
Staff
 
Messaggi: 865
Iscritto il: gio dic 21, 2006 11:59
Località: Foggia
Nome Cognome: Michelino Chionchio
Slackware: -current
Kernel: 2.6.29.6
Desktop: kde (current)

Re: Dubbi Bash

Messaggioda RedSkull92 » lun mar 08, 2010 22:06

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 ?
Avatar utente
RedSkull92
Linux 2.6
Linux 2.6
 
Messaggi: 554
Iscritto il: mar apr 21, 2009 16:25
Località: Palermo
Slackware: 64bit -current
Kernel: 3.5.4
Desktop: FluxBox

Re: Dubbi Bash

Messaggioda michelino » lun mar 08, 2010 23:43

Sinceramente non conosco la "command substitution" con la sintassi
Codice: Seleziona tutto
${command}

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.
Avatar utente
michelino
Staff
Staff
 
Messaggi: 865
Iscritto il: gio dic 21, 2006 11:59
Località: Foggia
Nome Cognome: Michelino Chionchio
Slackware: -current
Kernel: 2.6.29.6
Desktop: kde (current)

Re: Dubbi Bash

Messaggioda ulisse89 » mar mar 09, 2010 9:48

$(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.
Avatar utente
ulisse89
Packager
Packager
 
Messaggi: 644
Iscritto il: sab gen 17, 2009 12:53
Località: Bologna
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce

Re: Dubbi Bash

Messaggioda danix » mar mar 09, 2010 9:50

mettendo il comando tra parentesi tonde stai dicendo di eseguire il comando e di dare il risultato del comando come valore alla variabile, quindi:
Codice: Seleziona tutto
CWD=$(pwd)

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:
Codice: Seleziona tutto
CWD=${pwd}

la variabile $CWD avrà valore "pwd" che non è il massimo... ;)
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: Dubbi Bash

Messaggioda ulisse89 » mar mar 09, 2010 9:55

Danix, non credo neanche che assegni la stringa "pwd". Ho fatto una prova veloce dalla shell e CWD risulta vuota.
Avatar utente
ulisse89
Packager
Packager
 
Messaggi: 644
Iscritto il: sab gen 17, 2009 12:53
Località: Bologna
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce

Re: Dubbi Bash

Messaggioda danix » mar mar 09, 2010 10:11

hai ragione... my bad...
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: Dubbi Bash

Messaggioda conraid » mar mar 09, 2010 10:18

${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"
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12023
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Dubbi Bash

Messaggioda RedSkull92 » mar mar 09, 2010 15:20

ah ok gentilissimi.
Se avrò altre domande posterò quì così non apro millemila topic .
Avatar utente
RedSkull92
Linux 2.6
Linux 2.6
 
Messaggi: 554
Iscritto il: mar apr 21, 2009 16:25
Località: Palermo
Slackware: 64bit -current
Kernel: 3.5.4
Desktop: FluxBox

Re: Dubbi Bash

Messaggioda Mario Vanoni » mar mar 09, 2010 17:03

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.
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron