gpt4 book ai didi

linux - Bash 没有正确执行 '@' 字符

转载 作者:行者123 更新时间:2023-12-04 07:45:08 25 4
gpt4 key购买 nike

我有以下 bash 脚本:

#!/bin/bash
set -x
host=$1
conector=$2
configs='connector.class: io.confluent.connect.jdbc.JdbcSinkConnector, tasks.max: 1'

echo "{ name: $conector, config: { $configs } }" > payload.json
curl -v $host/connectors -d @payload.json -H "Content-Type: application/json"
我可以这样执行:
 bash create.sh http://10.0.0.78:8083 test
如果我在我的机器上本地执行,我会得到以下结果:
$ bash create.sh http://10.0.0.78:8083 test
+ host=http://10.0.0.78:8083
+ conector=test
+ configs='connector.class: io.confluent.connect.jdbc.JdbcSinkConnector, tasks.max: 1'
+ echo '{ name: test, config: { connector.class: io.confluent.connect.jdbc.JdbcSinkConnector, tasks.max: 1 } }'
+ curl -v http://10.0.0.78:8083/connectors -d @payload.json -H 'Content-Type: application/json'
* Trying 10.0.0.78:8083...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0
这对我来说没问题,服务器没有响应,但“curl -v ...”是正确的。现在我尝试在 Linux Server 中执行相同的命令,并得到以下结果:
+ host=http://10.8.0.78:8083
+ conector=test
+ configs='connector.class: io.confluent.connect.jdbc.JdbcSinkConnector, tasks.max: 1'
+ echo '{ name: test, config: { connector.class: io.confluent.connect.jdbc.JdbcSinkConnector, tasks.max: 1 } }'
+ curl -v http://10.8.0.78:***@payload.json -H 'Content-Type: application/json'
* Trying 10.8.0.78...
* TCP_NODELAY set
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
注意 bash 在服务器中创建的 curl:
curl -v http://10.8.0.78:***@payload.json
没道理,这个网址不存在。我注意到这是因为“@”字符,服务器中的 bash 正在解释这个字符,我不知道为什么。
编辑 1
从命令返回: LC_ALL=C cat -v create.sh
#!/bin/bash
set -x
host=$1
conector=$2
configs='connector.class: io.confluent.connect.jdbc.JdbcSinkConnector, tasks.max: 1'

echo "{ name: $conector, config: { $configs } }" > payload.json
curl -v $host/connectors -d @payload.json -H "Content-Type: application/json"
编辑 2
我正在使用 azuredevops 来执行脚本:
jobs:
- job: Deploy
pool: ${{parameters.agent}}
displayName: Deploy
steps:
- checkout: templates
- script: "bash create.sh $(KAFKACONNECT_URL) ${{parameters.conector}} \"${{parameters.configs}}\""
我不知道这是否是问题的原因。
问题已解决
事实上, "http://10.8.0.78:***@payload.json"不是问题,脚本执行得很好并且 URL 是正确的,但由于某种原因,AzureDevops 输出控制台隐藏它而不是显示完整的 URL(如我所料)。我启用了 "--trace"在 curl 中,看到 curl 按照我的预期发布了我的有效负载和 URL。所以,解决方案就是接受它,AzureDevops Console 令人困惑。

最佳答案

for some reason, AzureDevops Output Console is hidding it instead of show complete URL


Azure 控制台错误地认为 http://10.0.0.78:8083/connectors -d @payload.json是形式为 http://user:password@host.domain 的 URL因此正在用 8083/connectors -d 替换它认为的密码( *** ) .

关于linux - Bash 没有正确执行 '@' 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67233628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com