解析エラー:無効な文字列:U + 0000からU + 001Fまでの制御文字をエスケープする必要があります。 [閉じる]

解析エラー:無効な文字列:U + 0000からU + 001Fまでの制御文字をエスケープする必要があります。 [閉じる]

curl呼び出しを介してJSONを受け取るスクリプト実行.shがあります。

#!/bin/bash

source getoutput.sh
server="$1"
cmd="$2"

res=$(curl -sS http://$server -X PUT -H "Content-Type: application/json" -d "{ \"command\" : \"$cmd\" }")

この./execute.sh 246.XXX:2000 "FXXXXXXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXを停止"を実行すると

エラーなしで動作しています。

しかし、whileループ内で実行すると

while read id; do
./execute.sh 246.X.X.X:2000 "stop $id"
done < id

解析エラーが発生します。無効な文字列:U + 0000からU + 001Fまでの制御文字は、6行、74列からエスケープする必要があります。

出力差:

布材:

+ source getoutput.sh
+ server=246.X.X.X:2000
+ cmd='stop FXXXXXXXXXXX-XXXXXXXX-XXXXXXXX-XXXX'
++ curl -sS http://246.X.X.X:2000 -X PUT -H 'Content-Type: application/json' -d '{ "command" : "stop FXXXXXXXXXXX-XXXXXXXX-XXXXXXXX-XXXX" }'
+ res='{
  "status" : 200,
  "status_message" : "OK",
}'

whileループを使用しても機能しません。

+ source getoutput.sh
+ server=246.X.X.X:2000
+ ' cmd='stop FXXXXXXXXXXX-XXXXXXXX-XXXXXXXX-XXXX
++ " }'url -sS http://246.X.X.X:2000 -X PUT -H 'Content-Type: application/json' -d '{ "command" : "stop FXXXXXXXXXXX-XXXXXXXX-XXXXXXXX-XXXX
+ res='{
      "status" : 400,
      "status_message" : "Bad Request",
}'

jqバージョン:1.5、bashバージョン:4.3.48

ベストアンサー1

おすすめ記事