如何获取bash脚本中引号中参数的值?

如何获取bash脚本中引号中参数的值?

我正在使用这个命令:

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,但如果您的意思是希望$HOSTNAMEcurl命令中引用,那么引用整个 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\""

相关内容