Con el siguiente código, sigo obteniendo: línea 9: [: 8.8.8.8: expresión entera esperada Inseguro ¿por qué?
#!/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"
Respuestas
0 para la respuesta № 1Porque está intentando comparar "8.8.8.8" (cadena) con 0 (entero)
ping="8.8.8.8"
if [ "$ping" -ne 0 ]; then
La variable ping es una cadena.
0 para la respuesta № 2
Estás comparando un valor de cadena ("8.8.8.8"
) a un valor entero (0
)
Puede recuperar el código de salida de su ping
comando con $?
ping="8.8.8.8"
ping -q -c 5 "$ping"
ping=$?
if [ $ping -ne 0 ]; then
echo "NOTOK"
else
echo "OK"
fi
Comprobar esta publicación