Variables shell - concatenation

Résolu
nuanda -  
 nuanda -
Bonjour,

J'ai un script (il s'agit d'un makefile pour un programme en C) qui contient les variables:

input_path = ./input/inp.dat
DIR = ${shell awk '$$1 == "Dir" {print $$2}' $(input)}

La seconde ligne va chercher la chaine de caractere à droite de Dir dans le fichier input_path: output_path

Le probleme est que lorsque je souhaite creer une troisieme variable NEW à partir de DIR, il y a un espace (non voulu) à la fin de DIR.

NEW = $(DIR)/foo

echo NEW me retourne output_path /foo au lieu de output_path/foo

Je voudrais supprimer l'espace. Quelqu'un aurait-il une idée?? A noter que Google n'est pas tres utile pour ce coup ci car le signe dollar n'est pas reconnu par le moteur de recherche.... :(

Merci!

A voir également:

4 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
et en utilisant cette fonction
$(strip string)
    Removes leading and trailing whitespace from string and replaces each internal sequence of one or more whitespace characters with a single space. Thus, `$(strip a b c )' results in `a b c'. 

http://www.gnu.org/software/make/manual/make.html#Using-Variables
2
nuanda
 
Marche tres bien!
Merci!
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

man bash (Développement des paramètres)

$ DIR="output_path "

$ echo "${DIR}/foo"
output_path /foo

$ echo "${DIR% *}/foo"
output_path/foo

$
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
$ echo "${DIR/ /}/foo"
output_path/foo

Le fait aussi ;-))
0
nuanda
 
Merci pour vos reponses. Cependant, ça ne marche pas pour moi...

echo ${DIR}
output_path

echo ${OUTPUT_DIR/ /}/foo
/foo

idem pour
echo ${OUTPUT_DIR% *}/foo
/foo

Les guillemets ne changent rien :(

NB: c'est pareil si je crée moi même DIR = "output_path"


Bizarre bizarre...
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
echo ${DIR}
output_path

echo ${OUTPUT_DIR/ /}/foo
/foo

Euh... si tu n'essaies pas d'afficher la même variable, forcément ça bugue ;-((
0
nuanda
 
DIR et OUTPUT_DIR sont exactement les memes variables en fait, mais desolé pour la confusion.

Le "bug" ne vient donc pas de la :)
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Quel système ? Quel shell ?
0
nuanda
 
Mac OS X

Je suis en bash.

Et comme je disais dans mon 1er post, ces commandes sont dans un Makefile (pour un code en C) donc le script est lancé avec la commande make. Je sais pas si ça a une infuence (??).

C'est assez etrange... Peut etre que la solution la plus simple serait de "couper" le dernier caractere de DIR (cad l'espace) ...

Mais malgré tout, j'aimerais bien comprendre pourquoi les trucs du type
echo ${DIR% *}/foo ne fonctionnent pas !
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
NEW = $(DIR)/foo
Oups je n'avais pas fait attention, mais la syntaxe est propre au Makefile. Les parenthèses ne font pas partie de la syntaxe du shell pour la construction de variables ;-(
0