2017-02-22 70 views
0

用以下代碼,我保持: 第9行:[:8.8.8.8:預期的整數表達式 不確定爲什麼?Bash腳本 - 預期的整數表達式

#!/bin/bash 
sourceFile="file.log" 
targetFile="2file.log" 
ping="8.8.8.8" 
while IFS='' read -r line || [[ -n "$line" ]]; do 
echo "$line" >> "$targetFile" 
sudo service networking restart 
ping -q -c 5 "$ping" 
if [ "$ping" -ne 0 ]; then 
    sed -n -e 8p "$2file.log" 
fi 
done < "$sourceFile" 
+1

檢查您的測試0(零) – grail

+1

你似乎想檢查前一個命令的*退出狀態*,而不是'$ ping'的值:'if if [$? -ne 0];然後'或更直接'如果! ping -q -c 5「$ ping」; then'。 – chepner

回答

0

因爲你試圖

ping="8.8.8.8" 
if [ "$ping" -ne 0 ]; then 

平變量是要比較的字符串 「8.8.8.8」(字符串)0(整數)。

0

你是一個字符串值("8.8.8.8")比較,以一個整數值(0

您可以$?

ping="8.8.8.8" 

ping -q -c 5 "$ping" 

ping=$? 

if [ $ping -ne 0 ]; then 
    echo "NOTOK" 
else 
    echo "OK" 
fi 

檢查檢索您ping命令的退出代碼this post

+0

或'if ping -q -c 5「$ ping」;然後回顯「OK」;否則回顯「NOTOK」; fi' –