Repository 32bit  Forum
Repository 64bit  Wiki

Problema assurdo con uno script.

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
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 dell'ultima regola porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Re: Problema assurdo con uno script.

Messaggioda absinthe » sab apr 26, 2008 13:07

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

Re: Problema assurdo con uno script.

Messaggioda Mario Vanoni » sab apr 26, 2008 14:22

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

Re: Problema assurdo con uno script.

Messaggioda conraid » sab apr 26, 2008 15:25

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.
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11904
Iscritto il: gio lug 14, 2005 0:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Problema assurdo con uno script.

Messaggioda Mario Vanoni » sab apr 26, 2008 16:06

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

Re: Problema assurdo con uno script.

Messaggioda conraid » sab apr 26, 2008 16:10

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
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11904
Iscritto il: gio lug 14, 2005 0:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Problema assurdo con uno script.

Messaggioda Mario Vanoni » sab apr 26, 2008 16:35

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

Precedente

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti