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