2017-02-22 69 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' –