Newsgroup: it.comp.os.linux.sys
Titolo: nome di var tra tonde

ciao
stavo leggendo un po di Makefile che hanno a che fare con i moduli
ed ho visto alcune istruzioni che non ho trovato in man bash
esempio VERS:= $(shell uname -r)
perche' e' tra tonde?
ho cercato e non ho il comando shell quindi da da dove esce quello?
oppure ancora 
$(shell if [ -L /lib/modules/$(VERS)/lib 
grazie


|Date: Sun, 07 Sep 2003 09:00:58 GMT
|Subject: nome di var tra tonde
|
|ciao
|
|stavo leggendo un po di Makefile che hanno a che fare con i moduli
|ed ho visto alcune istruzioni che non ho trovato in man bash
|
|esempio VERS:= $(shell uname -r)
|
|perche' e' tra tonde?
1)  domanda di shell scripting di base: -> it.comp.os.linux.iniziare;
2)  non hai letto bene il manuale della "bash":
   Command Substitution
       Command substitution allows the output  of  a  command  to
       replace the command name.  There are two forms:
              $(command)
       or
              command
       Bash  performs  the  expansion  by  executing  command and
       replacing the command substitution with the standard  out­
       put  of  the  command, with any trailing newlines deleted.
       Embedded newlines are not deleted, but they may be removed
       during  word  splitting.   The  command substitution $(cat
       file) can be replaced by the  equivalent  but  faster  $(<
       file).
|ho cercato e non ho il comando shell quindi da da dove esce quello?
|oppure ancora
|$(shell if [ -L /lib/modules/$(VERS)/lib
  Può essere una funzione oppure un alias definito nello script, anche se
ritengo sia un comando interno di "make" (non è il mio campo).
  Sandro
-- 
Bellum se ipsum alet
       La guerra nutre se stessa
Livio, "Ab urbe condita", XXXIV,9

full-name ha scritto:

Se non sbaglio "shell" è una funzione usata da make e serve a restituire 
il valore di un comando della shell (un po' come gli apici inversi in 
bash). Insomma non l'hai trovato in man bash, perchè non credo sia un 
comando di bash.
Per quanto riguarda l'esempio con la variabile, il comando shell uname 
-r è tra parentesi tonde perchè in questo modo il suo output viene 
attribuito alla variabile VERS.
In bash l'equivalente sarebbe VERS=$(uname -r).
Il makefile non è linguaggio bash, ma contiene una serie di regole da 
passare a make.
Su tutta la materia, ti può essere utile "info make".
Se ho detto qualche assurdità, qualcuno mi corregga please!!! Non sono 
un esperto e magari imparo qualcosa di nuovo ;-)
Ciao, Paolo

Il giorno Sun, 7 Sep 2003, Alessandro Selli così ha scritto:
[...]
|2)  non hai letto bene il manuale della "bash":
|
|   Command Substitution
|       Command substitution allows the output  of  a  command  to
|       replace the command name.  There are two forms:
|
|              $(command)
|       or
|              command
|       Bash  performs  the  expansion  by  executing  command and
|       replacing the command substitution with the standard  out­
|       put  of  the  command, with any trailing newlines deleted.
|       Embedded newlines are not deleted, but they may be removed
|       during  word  splitting.   The  command substitution $(cat
|       file) can be replaced by the  equivalent  but  faster  $(<
|       file).
  Uffa, apici filtrati:
   Command Substitution
       Command substitution allows the output  of  a  command  to
       replace the command name.  There are two forms:
              $(command)
       or
              `command`
       Bash  performs the  expansion  by  executing _command_ and
       replacing the command substitution with the standard  out-
       put  of  the  command, with any trailing newlines deleted.
       Embedded newlines are not deleted, but they may be removed
       during  word  splitting.   The  command substitution $(cat
       file) can be replaced by the  equivalent  but  faster  $(<
       file).
  Sandro
