2014-12-03 98 views
3

任何人都可以建議我的腳本有什麼問題嗎? 這就是:捲曲,張貼/插入空值

#!/bin/sh 
url="http://myhost.mydomain/test.php" 
status=$(curl -s --head -w %{http_code} "$url" -o /dev/null) 
while read LINE 
do 
# 
#some stuffs here 
# 

if [ $status -eq 200 ] 
then 
    curl -H "Content-Type:application/json" \ 
    -XPOST "$url" --data '{"name":"'"$name"'","email":"'"$email"'","phone":"'"$phone"'"}' 
else 
    echo "Invalid Link." 
done < myFile.txt 

請看看實際的結果,當我發佈(直接插入到數據庫)。

 
ID Name Email    Phone 
1        0 
2 Anne [email protected]  112783 
3 Anne2 [email protected] 112784

正如你可以看到,它在ID 1發佈空值。我怎樣才能避免這種情況,其中沒有不必要的空值會被添加/張貼在頁面中?將不勝感激的任何幫助。謝謝。

+1

[$ status -eq 200]會調用test.php爲空值。在test.php中,你需要檢查$ _SERVER ['REQUEST_METHOD'] =='POST',如果$ _SERVER ['REQUEST_METHOD']!='POST'沒有插入任何東西 – anhlc 2014-12-03 04:17:15

+1

我很難理解@ anhic的評論,儘管它基本上正確。 '狀態'分配是第一次PHP調用發生的地方,但不是當您將結果狀態與200比較時。 – tripleee 2014-12-03 07:12:43

+0

(1)我也不理解@ anhic的評論。 (2)'fi'丟失。 (3)爲什麼if-then-else在while循環中?如果'status'不是200,輸出將只顯示'無效的鏈接.' – Jdamian 2014-12-03 08:34:08

回答

0

只要添加支票,如果$ name和$ email和$ phone變量都是非空的,那麼怎麼辦?

if [ $status -eq 200 ] 
then 
    if [ -n "$name$email$phone" ] 
    then 
     curl -H "Content-Type:application/json" \ 
     -XPOST "$url" --data '{"name":"'"$name"'","email":"'"$email"'","phone":"'"$phone"'"}' 
    else 
     echo "Invalid data." 
    fi 
else