Problema assurdo con uno script.

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.
Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Re: Problema assurdo con uno script.

Messaggio da absinthe »

ora=`/bin/date +%H:%M`

accento grave, oppure solo nella bash

ora=$(/bin/date +%H:%M)

Mario Vanoni
scusa Mario, confermi la cosa? io ricordo di aver usato più volte la sintassi VARIABILE=$(comando) anche in ash e di non aver trovato intoppi... questo è confermato anche qui, riporto un estratto:
Command Substitution

Ash accepts two syntaxes for command substitution:

`list`

and

$(list)

Either of these may be included in a word. During the
command substitution process, the command (syntactly a
list) will be executed and anything that the command
writes to the standard output will be captured by the
shell. The final newline (if any) of the output will be
deleted; the rest of the output will be substituted for
the command in the word.
questo significherebbe che neppure la ash è effettivamente un clone esatto della vecchia sh! io invece ero convinto che fosse così!
e comunque, clone esatto o meno: quale delle due espressioni e stringentemente POSIX? la prima oppure entrambe?

grazie,
M

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Problema assurdo con uno script.

Messaggio da Mario Vanoni »

absinthe ha scritto:
ora=`/bin/date +%H:%M`

accento grave, oppure solo nella bash

ora=$(/bin/date +%H:%M)

Mario Vanoni
scusa Mario, confermi la cosa? io ricordo di aver usato più volte la sintassi VARIABILE=$(comando) anche in ash e di non aver trovato intoppi... questo è confermato anche qui, riporto un estratto:
Command Substitution

Ash accepts two syntaxes for command substitution:

`list`

and

$(list)

Either of these may be included in a word. During the
command substitution process, the command (syntactly a
list) will be executed and anything that the command
writes to the standard output will be captured by the
shell. The final newline (if any) of the output will be
deleted; the rest of the output will be substituted for
the command in the word.
questo significherebbe che neppure la ash è effettivamente un clone esatto della vecchia sh! io invece ero convinto che fosse così!
e comunque, clone esatto o meno: quale delle due espressioni e stringentemente POSIX? la prima oppure entrambe?

grazie,
M
Bourne Shell e shell della stessa generazione conoscevano unicamente:
arg1 = arg2
`cmd`
. filename

La prossima generazione in parte accetta o accetta pienamente
arg1 == arg2
$(cmd)
source filename

Per quanto sappia, una shell POSIX deve interpretare ambedue le notazioni.

Pero` una shell POSIX conosce cose non esistenti nelle vecchie, e.g.
[alnum] [alpha] [ascii] ecc.
quindi preferisco scrivere [A-Za-z0-9] per il primo, sono sicuro che funziona.

Mario Vanoni

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Problema assurdo con uno script.

Messaggio da conraid »

Se è come dite voi perché Pat scrive

Codice: Seleziona tutto

Honestly, I think /testing may be a better
  place for bash-3.2 for a while longer -- it's causing trouble with many old
  scripts.  So, we'll give it a while longer to stabilize and for scripts to
  catch up to any syntax changes which may have occurred.  The fix for 99.9%
  of these old scripts is to not use the deprecated `command` syntax and
  instead use the $(command) syntax.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Problema assurdo con uno script.

Messaggio da Mario Vanoni »

conraid ha scritto:Se è come dite voi perché Pat scrive

Codice: Seleziona tutto

Honestly, I think /testing may be a better
  place for bash-3.2 for a while longer -- it's causing trouble with many old
  scripts.  So, we'll give it a while longer to stabilize and for scripts to
  catch up to any syntax changes which may have occurred.  The fix for 99.9%
  of these old scripts is to not use the deprecated `command` syntax and
  instead use the $(command) syntax.
Quanti shell scripts esistono al mondo su quante macchine, vecchie e nuove?

Se `command` e` deprecato, quanti di questi scripts sono da riscrivere?

Quindi bash-3.2 porta tanto lavoro, quanti sistemi andranno in TILT?

Il forum si prepari ...

Mario Vanoni

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Problema assurdo con uno script.

Messaggio da conraid »

Mario Vanoni ha scritto: Se `command` e` deprecato, quanti di questi scripts sono da riscrivere?

Quindi bash-3.2 porta tanto lavoro, quanti sistemi andranno in TILT?
E' quel che pensavo io, e poi nella documentazione della bash 3.2 c'è ancora scritto che `command` va bene. Non so che pensare.

http://www.gnu.org/software/bash/manual ... bstitution

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Problema assurdo con uno script.

Messaggio da Mario Vanoni »

conraid ha scritto:
Mario Vanoni ha scritto: Se `command` e` deprecato, quanti di questi scripts sono da riscrivere?

Quindi bash-3.2 porta tanto lavoro, quanti sistemi andranno in TILT?
E' quel che pensavo io, e poi nella documentazione della bash 3.2 c'è ancora scritto che `command` va bene. Non so che pensare.

http://www.gnu.org/software/bash/manual ... bstitution
Da subito usare $(command) e cambiare man mano gli script con `command`.

Vale solo su Linux recenti, mai toccare una vecchia macchina Sun-OS o Ultrix!
Quella in ditta, dual XEON-2800 2GB RAM 3 HD SCSI vivra` ancora anni, con Slackware 10.1.

Mario Vanoni

Rispondi