/ / Bash Script - Expresión entera esperada - bash

Bash Script - Expresión entera esperada - bash

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 № 1

Porque 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