663 votes

Expansion des variables entre guillemets simples dans une commande en Bash

Je veux exécuter une commande à partir d'un bash script qui a des guillemets simples et quelques autres commandes à l'intérieur des guillemets simples et une variable.

par exemple repo forall -c '....$variable'

Dans ce format, $ est échappé et la variable n'est pas développée.

J'ai essayé les variantes suivantes, mais elles ont été rejetées :

repo forall -c '...."$variable" '

repo forall -c " '....$variable' "

" repo forall -c '....$variable' "

repo forall -c "'" ....$variable "'"

Si je substitue la valeur à la place de la variable, la commande est exécutée sans problème.

S'il vous plaît, dites-moi où je me trompe.

60 votes

repo forall -c ' ...before... '"$variable"' ...after...'

3 votes

@n.m. les guillemets simples font partie de la commande repo. je ne pense pas que cela fonctionnera.

1 votes

bash mange des guillemets simples. Soit vous n'êtes pas dans bash ou les guillemets simples ne font pas partie de l'adresse IP. repo commandement.

0voto

user3734617 Points 11

Les variables peuvent contenir des guillemets simples.

myvar=\'....$variable\'

repo forall -c $myvar

1 votes

Ils peuvent, mais ce n'est pas la bonne façon de faire - vous devriez toujours mettre "$myvar" entre guillemets.

-4voto

drgnfr Points 53

Est-ce que ça marche pour vous ?

eval repo forall -c '....$variable'

10 votes

Est-ce que ça vous convient ? Cette question a cinq ans et a déjà des réponses, même une réponse acceptée...

0 votes

eval écrase tous ses arguments en une seule chaîne de caractères avant de faire passer cette chaîne par l'analyseur ; dans ce contexte, il cause beaucoup plus de problèmes qu'il n'en résout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X