0
我有一個Unix每小時運行的shell(CentOS 7上的crontab)。使用捲曲與-d param1 = value1似乎不能正常工作
在該shell中,循環讀取並繼續處理所有新文件在定義的文件夾中查找。 在每個文件的處理結束時的捲曲命令發送具有一些參數,例如:
curl https://aaaaaa.com/website -d param1=value1 -d param2=value2 ....
每個殼通過運行crontab時,第一CURL被正確地轉換爲一個真正的URL和Apache接收到/ Tomcat,但所有其他人都不好。事實上,第二個及以下的捲髮以正確的格式似乎並不像轉換
https://aaaaaa.com/website?param1=value1¶m2=value2
但她們很快
https://aaaaaa.com/website -d param1=value1 -d param2=value2
因此網站無法正確對待的參數發送。
爲什麼1st命令被正確轉換爲正確的URL格式,而不是以下內容?
編輯 - 編輯
外殼的一部分:
#!/bin/bash
...
#======================================================
# FUNCTIONS
#======================================================
UpdateStatus() {
CMD_CURL="${URL_WEBSITE} -d client=CLIENT -d site=TEST -d produit=MEDIASFILES -d action=update"
CMD_CURL="${CMD_CURL} -d codecmd=UPDATE_MEDIA_STATUS"
CMD_CURL="${CMD_CURL} -d idmedia=$4"
CMD_CURL="${CMD_CURL} -d idbatch=$3"
CMD_CURL="${CMD_CURL} -d statusmedia=$2"
if [[ ! -z "$5" ]]; then
CMD_CURL="${CMD_CURL} -d filename=$5"
fi
echo " ${CMD_CURL}" >> $1
CURL_RESULT=`curl -k ${CMD_CURL}`
CURL_RESULT=`echo ${CURL_RESULT} | tr -d ' '`
echo " Result CURL = ${CURL_RESULT}" >> $1
if [ "${CURL_RESULT}" = "OK" ]; then
return 0
fi
return 1
}
#======================================================
# MAIN PROGRAM
#======================================================
echo "----- Batch in progress : `date '+%d/%m/%y - %H:%M:%S'` -----"
for file in $(ls ${DIR_FACTORY_BATCHFILES}/*.batch)
do
...
old_IFS=$IFS
while IFS=';' read <&3 F_STATUS F_FILEIN F_TYPE F_CODE F_ID F_IDPARENT F_TAGID3 F_PROF F_YEARMEDIA F_DATECOURS F_TIMEBEGINCOURS F_LANG || [[ -n "$F_STATUS $F_FILEIN $F_TYPE $F_CODE $F_ID $F_IDPARENT $F_TAGID3 $F_PROF $F_YEARMEDIA $F_DATECOURS $F_TIMEBEGINCOURS $F_LANG" && $F_STATUS ]];
do
...
UpdateStatus ${LOG_FILENAME} ${STATUS_ERROR} ${F_ID} ${F_IDPARENT}
...
done 3< $file
IFS=$Old_IFS
...
done
您可以共享您的腳本的一部分關於捲曲循環嗎? – gile
聽起來就像你正在做'捲曲'相當於https://aaaaaa.com/website -d param1 = value1 -d param2 = value2',這樣每個'-d'及其參數都被認爲是URL的一部分參數,而不是單獨的參數'curl'。 – chepner