如何在单引号中使用主机名变量?
how to use hostname variable in single quoted?
在名为 "input_data"
的 bash 文件中
LA=
curl -H 'Content-Type: application/x-ndjson' -XPOST '"'$LA'":9200/human_flow/human_flow/_bulk?pretty' --data-binary @.json
当运行命令
./input_data localhost human_flow
给出错误信息
bash-3.2$ ./input_data localhost human_flow
curl: (6) Could not resolve host: "localhost"
localhost可以解析
bash-3.2$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.067 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.156 ms
使用 127.0.0.1 而不是本地主机
bash-3.2$ ./input_data 127.0.0.1 human_flow
curl: (6) Could not resolve host: "127.0.0.1"
正确的用法如下:
curl \
-H 'Content-Type: application/x-ndjson' \
-XPOST \
--data-binary "@.json" \
"$LA:9200/human_flow/human_flow/_bulk?pretty"
- 所有扩展都用双引号引起来 -- 既不在单引号中(防止它们被扩展)也不用引号引起来。
- 如果希望双引号具有语义意义,则双引号不能放在单引号内。
- 根据 POSIX 约定,位置参数应在所有可选参数之后指定。遵循 GNU 约定的应用程序并不严格要求这样做,但全面遵循它可以避免意外。
在名为 "input_data"
的 bash 文件中LA=
curl -H 'Content-Type: application/x-ndjson' -XPOST '"'$LA'":9200/human_flow/human_flow/_bulk?pretty' --data-binary @.json
当运行命令
./input_data localhost human_flow
给出错误信息
bash-3.2$ ./input_data localhost human_flow
curl: (6) Could not resolve host: "localhost"
localhost可以解析
bash-3.2$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.067 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.156 ms
使用 127.0.0.1 而不是本地主机
bash-3.2$ ./input_data 127.0.0.1 human_flow
curl: (6) Could not resolve host: "127.0.0.1"
正确的用法如下:
curl \
-H 'Content-Type: application/x-ndjson' \
-XPOST \
--data-binary "@.json" \
"$LA:9200/human_flow/human_flow/_bulk?pretty"
- 所有扩展都用双引号引起来 -- 既不在单引号中(防止它们被扩展)也不用引号引起来。
- 如果希望双引号具有语义意义,则双引号不能放在单引号内。
- 根据 POSIX 约定,位置参数应在所有可选参数之后指定。遵循 GNU 约定的应用程序并不严格要求这样做,但全面遵循它可以避免意外。