Comment puis-je utiliser des espaces dans systemd arguments de ligne de commande?
J'ai une unité systemd avec des espaces dans un argument
ExecStart=command --argument="text text"
Il semble que systemd ne reconnaît pas la double ou des guillemets simples, et il se divise l'argument en deux arguments. Une idée de comment je peux empêcher cela? Je suis en utilisant systemd v218 au sein de CoreOS.
S'échapper avec barre oblique inverse?
référence du document: freedesktop.org/software/systemd/man/...
référence du document: freedesktop.org/software/systemd/man/...
OriginalL'auteur Wolfgang | 2015-03-05
Vous devez vous connecter pour publier un commentaire.
C'est en fait étonnamment difficile à faire, malheureusement. J'ai volé cette info de cette réponse. La seule façon de le faire est de mettre vos arguments dans un environnement de fichier, puis de les utiliser comme des variables en tant que tels (comme dans /etc/.progconfig):
Puis importer le fichier d'environnement avant de lancer votre commande:
Environment='ARGUMENT=text text'
etExecStart = command --argument=$ARGUMENT
et qui fonctionne!OriginalL'auteur nico
systemd ne semble reconnaître citations entièrement wrap arguments; c'est à dire
ExecStart=command "--argument=text text"
fonctionne mais
ExecStart=command --argument="text text"
ne le fait pas. Je viens de tomber sur ce problème et a déposé #624 à ce sujet.
OriginalL'auteur Tgr
Que Nico a suggéré, vous pouvez créer un EvironmentFile dans laquelle vous pouvez spécifier un argument avec des espaces.
Dans votre unité fichier toutefois, vous aurez besoin de mettre cet argument, dans des accolades pour que les places soient transmis correctement.
OriginalL'auteur Niki
Je pense que les versions récentes de systemd ont commencé à accepter des citations dans le milieu d'arguments, plus proche de ce que bash accepte. Toutefois, @Tgr la réponse est toujours correct, et il vaut la peine de s'attarder sur. Citant l'ensemble de l'argument, y compris le drapeau de nom, fonctionne ici. Si vous faites cela:
Puis systemd va comprendre
--argument=text text
comme un seul de position argument. Vous n'avez pas à vous soucier plus de fractionnement qui se passe sur cet espace. Vous pouvez voir le même comportement dans bash:OriginalL'auteur Jack O'Connor
Essayer de s'échapper de l'espace, comme suit:
(Les guillemets peut ou peut ne pas être nécessaire.)
OriginalL'auteur evanscott815