Bash在curl命令中添加了额外的单引号,定义为“ ... $'...'...”

时间:2018-09-26 21:31:15

标签: bash curl

这与Prevent bash from adding single quotes to variable output非常相似,但是这些答案都没有帮助我。

此脚本:

set -ex

curl_headers=(
    --silent
    "--form release_description=$'\n new \n'"
)

curl "${curl_headers[@]}" "example.com"

返回此输出:

+ curl_headers=(--silent "--form release_description=$'\n new \n'")
+ curl --silent '--form release_description=$'\''\n new \n'\''' example.com

这是我不想做的两件事。它在--form之前添加了一个刻度,并且在我的release_description

中转义了单个刻度

所需的结果是:

curl --silent --form release_description=$'\n new \n' example.com

我如何删除转义序列并添加单个刻度?

1 个答案:

答案 0 :(得分:3)

单引号只是跟踪模式(来自-x选项)如何显示字符串;它根本不影响您的命令。主要问题是您要将两个单独的参数(--form及其参数)组合为一个。

正确的脚本应该类似于

set -ex

curl_headers=(
    --silent
    --form
    release_description=$'\n new \n'
)

curl "${curl_headers[@]}" "example.com"