bash에서 작은 따옴표 ('like this'
)를 사용하면 변수 확장없이 리터럴 문자열을 얻을 수 있습니다.
$ echo '$DISPLAY'
$DISPLAY
으로 :
$ echo "$DISPLAY"
:0
이것은 당신이 당신의 curl
명령 줄에서 정확히 같은 상황은 다음과 같습니다
'{ "author": "icingaadmin", "comment": " Working on it.", "notify": true, "filter": "host.name == {\"$1\} && service.name == {\"$2\}"" }'''
숫자의 실제로 사용있다 즉 비교입니다 거기에 '''
으로 시작하여 마지막으로 }
앞에 ""
을 포함하여 문제를 인용합니다. 변수를 확장하려면 작은 따옴표 밖에서 변수를 이동해야합니다. 이 작업을 수행 할 수 있습니다이 경우
'"host.name == {"'"$1"'"} && ...'
는 "$1"
은 작은 따옴표의 외부 입니다. 또한,이 작업을 수행 할 수 있습니다 우리가 외부에 따옴표를 사용하고
다음 "\"host.name == {\"$1\"} ** ..."
, 그래서 변수 확장은 정상적으로 작동하지만, 우리는 문자열 내의 모든 문자 "
을 탈출해야합니다. (나는 icinga에 익숙하지이기 때문에 "뭔가")를
첫 번째 옵션을 사용하여, -d
에 최종 인수가이 같은과 같습니다 foo
및 $2
이 bar
입니다
'{ "author": "icingaadmin", "comment": " Working on it.", "notify": true, "filter": "host.name == {"'"$1"'"} && service.name == {"'"$2"'"}}'
$1
경우, 이것은 당신에게 준다 :
{ "author": "icingaadmin", "comment": " Working on it.", "notify": true, "filter": "host.name == {"foo"} && service.name == {"bar"}}
같은 것으로 실행할 수 없었다. 이스케이프 시퀀스가 여전히 작동하지 않는 것처럼 보입니다. – masteraravind
어떤 방법으로 실패 했습니까? – larsks