bash - Shell 脚本 - CURL 脚本返回错误

标签 bash shell ubuntu curl

这有点棘手。我有一个 shell 脚本来在我们的 JIRA 中创建任务。我在 Ubuntu 服务器(新手)上运行它。

我在脚本中有一个变量,如下所示:

SCRIPT="curl -D- -u $USER:$PASSWORD -X POST --data @$SAMPLE_FILE -H \"Content-Type:   application/json\" $REST_URL"

我回显这个脚本并使用 $SCRIPT 我的 shell 脚本运行它。当我 bash 脚本时,它总是返回错误 "curl: (6) Couldn't resolve host 'application'" .

但是,如果我尝试单独运行打印的 SCRIPT(我回显),它会创建一个任务。我知道这是一个小问题,但我无法得到它!

有什么建议么?

最佳答案

正如 bash tag wiki 中所建议的那样,我们可以通过 shellcheck 运行您的代码自动检查常见问题:

$ shellcheck yourscript

In yourscript line 1:
SCRIPT="curl... -H \"Content-Type: application/json\" $REST_URL"
       ^-- SC2089: Quotes/backslashes will be treated literally. Use an array.

In yourscript line 2:
$SCRIPT
^-- SC2090: Quotes/backslashes in this variable will not be respected.

好的,那么 let's use an array :
command=(curl -D- -u "$USER:$PASSWORD" -X POST --data "@$SAMPLE_FILE" -H "Content-Type:   application/json" "$REST_URL")

# Print what we'll execute:
printf "%q " "${command[@]}"
echo

# Execute it:
"${command[@]}"

关于bash - Shell 脚本 - CURL 脚本返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24084257/

相关文章:

shell - 将 awk 与变量一起使用

ubuntu - 使用自定义 OpenSSL 构建 OpenVPN

bash - 在没有事先赋值的情况下声明和设置变量

c++ - 如何使用从 shell 脚本调用的 gdb 运行程序,该脚本又通过 boost::process 从 c++ 调用

shell - 如何使用 sed 从文件中删除一些字符?

c++ - 使用 UDP 连接到服务器

bash - 按索引访问 shell 脚本参数

python - 在 PyCharm 中运行 bash 脚本时查看 stdout

linux - 如何在 wget 中的主机名内跟踪重定向?

linux - 如何杀死已经使用源执行的脚本?