【发布时间】:2019-01-07 11:02:59
【问题描述】:
在 ubuntu 上使用 curl 我正在尝试获取受以下启发的 Jenkins 版本:
https://wiki.jenkins.io/display/JENKINS/Remote+access+API
在 bash 脚本中我这样做:
VERSION=$(curl -k -i -X GET --insecure --silent --header \"Authorization: Bearer $TOKEN \" $URL | grep -Fi X-Jenkins: | awk '{print $2}')
echo "__A__[${VERSION}]__B__"
但是当我运行脚本时,我得到:
]__B__2.89.2
所以由于某种原因,前缀:__A__[ 被吞并,后缀变成了一个前缀。
我还尝试使用以下方法修剪输出:
VERSION=$(curl -k -i -X GET --insecure --silent --header \"Authorization: Bearer $TOKEN \" $URL | grep -Fi X-Jenkins: | awk '{print $2}' | sed -e 's/^[ \t]*//')
但它给出了相同的结果。
如下所示,我也尝试过:
echo '__A__['"${VERSION}"']__B__'
但仍然给出相同/错误的结果。
我尝试过的其他一些事情(给出相同的结果)
输出相同/错误
VERSION=$(curl -k -i -X GET --insecure --silent --header \"Authorization: Bearer $TOKEN \" $URL | grep -i X-Jenkins: | awk '{print $2}')
echo '__A__['"${VERSION}"']__B__'
输出相同/错误
VERSION=$(curl -k -i -X GET --insecure --silent --header \"Authorization: Bearer $TOKEN \" $URL | grep X-Jenkins: | awk '{print $2}')
echo '__A__['"${VERSION}"']__B__'
根据我现在尝试的以下建议:
echo $VERSION|od -ax
这给出了:
0000000 2 . 8 9 . 2 cr nl
2e32 3938 322e 0a0d
0000010
如果我将其与:
VERSION_TEMP="2.89.2"
echo $VERSION_TEMP|od -ax
我明白了:
0000000 2 . 8 9 . 2 nl
2e32 3938 322e 000a
0000007
所以看起来它是导致问题的 VERSION var 中的 cr(不确定如何解释上述前缀/后缀的整个反转)。
已解决:根据 Romeo 的输入,我现在可以添加 |tr -d '\r' 了:
VERSION=$(curl -k -i -X GET --insecure --silent --header \"Authorization: Bearer $TOKEN \" $URL | grep X-Jenkins: | awk '{print $2}'|tr -d '\r')
【问题讨论】:
-
你需要
-Fingrep吗? -
我尝试将 -F 和 -i 都删除到 grep,结果相同,请参阅更新后的帖子。
-
尝试将二进制数据转储到 VERSION 变量
echo $VERSION|od -ax中,以检查其中是否存在奇怪的符号。 -
--header参数周围的转义双引号不能正确。