在curl中使用时,如何在shell脚本中重用变量?

时间:2018-12-11 03:48:48

标签: bash shell curl

根据某些条件,我想使用JWT,否则我想提供证书的路径。因此,在我的shell脚本中,这是代码:

if /* some condition */
  authorization='-H "'Authorization': 'Bearer' ${JWT}"'
else
  authorization="--cert "${ADMIN_CERT_PATH}" --key "${ADMIN_KEY_PATH}""

现在,curl请求应为:  curl -H "Authorization: Bearer 348129"用于if条件  curl --cert /Users/.../admin_cert --key /Users/../admin_key .. for else path

为了获得该输出,我需要在shell脚本中为if条件使用以下格式

response_code="$(curl -s -o /dev/null -w "%{http_code}" "$authorization" "$status_url")"

以及其他格式的以下格式:

response_code="$(curl -s -o /dev/null -w "%{http_code}" $authorization "$status_url")"

注意: 我需要$ authorization变量在第一种情况下被引用而在其他情况下不被引用。 我不想编写2个不同的curl命令,而是重新使用授权变量。 因此,我需要修改声明授权变量的方式,以便我只能编写任何一个curl命令,该命令对if和else情况均有效。

2 个答案:

答案 0 :(得分:2)

<Marker key={key} position={ [latitude, longitude] } icon={icon} > <Tooltip>{visibleMarkers[key].category}</Tooltip> </Marker> 支持一种在具有复杂参数的情况下在我以前使用过的文件中传递命令行参数的方法。这个想法是将复杂的命令行参数放入一个简单的文本文件中,并指示curl使用--config参数从其中读取参数。

在这种情况下,shell脚本如下所示。

curl

前几行设置了一个临时文件,当shell脚本退出时,该文件将被删除。如果您已经在使用trap,则清理操作可能会更加复杂。

答案 1 :(得分:1)

使用支持阵列的外壳时,可以避免需要临时配置文件。

curl_opts=(-s -o /dev/null -w "%{http_code}")
if /* some condition */
  curl_opts+=(-H "Authorization: Bearer $JWT")
else
  curl_opts+=(--cert "$ADMIN_CERT_PATH" --key "$ADMIN_KEY_PATH")
fi

...

response_code="$(curl "${curl_opts[@]}" "$status_url")"