Si vous utilisez des guillemets simples ('like this'
) dans bash, vous obtenez une chaîne littérale sans expansion de variable. Autrement dit, comparer:
$ echo '$DISPLAY'
$DISPLAY
Avec:
$ echo "$DISPLAY"
:0
C'est exactement la même situation que dans votre ligne de commande curl
, où vous avez:
'{ "author": "icingaadmin", "comment": " Working on it.", "notify": true, "filter": "host.name == {\"$1\} && service.name == {\"$2\}"" }'''
Il y a actuall un certain nombre de citation des problèmes là à partir de la '''
à la fin, et en incluant le ""
juste avant la finale }
. Si vous souhaitez étendre ces variables, vous devrez les déplacer en dehors de vos guillemets simples. Vous pouvez le faire:
'"host.name == {"'"$1"'"} && ...'
Dans ce cas, le "$1"
est en dehors des guillemets simples. Vous pouvez le faire:
"\"host.name == {\"$1\"} ** ..."
Ici, nous sommes en train d'utiliser des guillemets à l'extérieur, de sorte que l'expansion des variables fonctionne normalement, mais nous devons échapper à chaque "
littéral dans la chaîne.
En utilisant la première option, l'argument final -d
ressemblerait à quelque chose comme ça ("quelque chose" parce que je ne suis pas familier avec icinga):
'{ "author": "icingaadmin", "comment": " Working on it.", "notify": true, "filter": "host.name == {"'"$1"'"} && service.name == {"'"$2"'"}}'
Si $1
est foo
et $2
est bar
, cela vous donne:
{ "author": "icingaadmin", "comment": " Working on it.", "notify": true, "filter": "host.name == {"foo"} && service.name == {"bar"}}
Je ne pouvais pas exécuter avec le même, On dirait que la séquence d'échappement ne fonctionne toujours pas. – masteraravind
En quoi a-t-il échoué? – larsks