2014-10-09 65 views
0

解決方案的Linux腳本的netcat

while read -r line 
do 
     echo $line 
done < <(nc -l -p 4001) 

用命令

nc -l -p 4001 -v 

我可以聽端口4001到我的條碼掃描儀(沒有腳本的工作)。

我試圖寫一個bash腳本這樣

while true do 

    if [ nc -l -p 4001 -v ] then 
    echo "barcode incoming" 
    fi 

done 

如何檢查是否nc -l -p 4001 -v是不是空的?

回答

0

您可以通過檢查nc命令的返回狀態,像這樣使用:

while true; do 

    if nc -l 4001; then 
    echo "barcode incoming" 
    else 
    sleep 1 
    fi 

done 
+1

你的代碼可以變得更簡單:'if nc -l -w 3 -p 4001 -v; then'。 – 2014-10-09 07:29:07

+0

謝謝,好點。我編輯 – anubhava 2014-10-09 07:31:18

+0

@anubhava它不適合我。當我運行這個腳本時,我從'192.168.100.111:5011'連接。現在我可以掃描我的條形碼,但回顯**條形碼傳入**不會出現。 – Philipp88 2014-10-09 08:03:47

0

什麼是您所看到的完整輸出?

我嘗試了一樣,我看到下面的打印:

listening on [any] 7000 ... 
10.62.73.59: inverse host lookup failed: Unknown host 
connect to [10.63.61.231] from (UNKNOWN) [10.62.73.59] 48138 
./tt_DIR/0000755000175000017500000000000012407172607011306 5ustar sdlcbsdlcbbarcode incoming 
listening on [any] 7000 ... 

「條碼進入」越來越被印在了我的情況。