9

test.shスクリプトを実行しようとすると、curlから常にエラーが発生します。

curl: (6) Couldn't resolve host 'application'

test.sh:

#!/bin/sh
CT="Content-Type:\ application/json"

TEST="curl http://127.0.0.1 -H $CT"
echo $TEST

RESPONSE=`$TEST`
echo $RESPONSE

しかし、コンソールから次のコマンドを実行するだけで、すべてうまくいきます。

curl http://127.0.0.1 -H Content-Type:\ application/json

「スペース」エスケープに問題があることは理解していますが、修正方法がわからないため、スクリプトの何が問題になっているのか教えてください。

また、私は次の組み合わせを試しましたが、結果は同じです:

CT="Content-Type: application/json"
TEST="curl http://127.0.0.1 -H \"$CT\""

UPD:

bash/dashはサーバーでのみ使用できます。(/ bin / sh-> bash)

GNU bash, version 4.2.10(1)-release (x86_64-pc-linux-gnu)
4

2 に答える 2

19

以下を実行します: ( Content-Typeの後のスペースを削除します)

#!/bin/bash
CT="Content-Type:application/json"

TEST="curl http://127.0.0.1 -H $CT"
echo $TEST

RESPONSE=`$TEST`
echo $RESPONSE
于 2012-08-21T09:43:59.143 に答える
1

あなたは試すことができます:bash -c your_bash_file.shそれは同じ問題で私のために働いた

于 2015-05-06T07:08:31.477 に答える