Variables shell - concatenation
Résolu
nuanda
-
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!
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:
- Variables shell - concatenation
- Classic shell - Télécharger - Personnalisation
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Shell startup windows 10 - Guide
- Shell infrastructure host c'est quoi - Guide
- Shell do while ✓ - Forum Shell
4 réponses
hello
et en utilisant cette fonction
http://www.gnu.org/software/make/manual/make.html#Using-Variables
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
Salut,
man bash (Développement des paramètres)
man bash (Développement des paramètres)
$ DIR="output_path " $ echo "${DIR}/foo" output_path /foo $ echo "${DIR% *}/foo" output_path/foo $
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...
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...
DIR et OUTPUT_DIR sont exactement les memes variables en fait, mais desolé pour la confusion.
Le "bug" ne vient donc pas de la :)
Le "bug" ne vient donc pas de la :)
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 !
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 !
Merci!