我正在使用这个命令:
curl -I "http://localhost:8080/jobname/buildWithParameters?ENVIRONMENT=UPPER_DEV&IP=$HOSTNAME"
我给出其中的一部分:
echo '"$HOSTNAME"'
我期待引号内的输出:"abcxyz.dev.int"
。
但我得到这个输出。
"$HOSTNAME"
我没有得到我的主机名的值。请帮忙解决这个问题。
答案1
单引号意味着变量不会被扩展:
$ echo '$HOSTNAME'
$HOSTNAME
如果您需要打印带引号的变量,则更容易(无论如何总体上更好)使用printf
:
$ printf '"%s"\n' "$HOSTNAME"
"myHost"
如果你必须使用echo
,你可以这样做:
$ echo "\"$HOSTNAME\""
"myHost"
或这个:
$ echo '"'"$HOSTNAME"'"'
"myHost"
我不明白这与您显示的命令有何关系curl
,但如果您的意思是希望$HOSTNAME
在curl
命令中引用,那么引用整个 URL 就足够了,如下所示:
curl -I "http://localhost:8080/jobname/buildWithParameters?ENVIRONMENT=UPPER_DEV&IP=$HOSTNAME"
或者,如果服务器需要引号,您可以执行以下操作:
curl -I "http://localhost:8080/jobname/buildWithParameters?ENVIRONMENT=UPPER_DEV&IP='$HOSTNAME'"
但如果您真的非常需要双引号,请尝试:
curl -I "http://localhost:8080/jobname/buildWithParameters?ENVIRONMENT=UPPER_DEV&IP=\"$HOSTNAME\""