Red de conocimiento informático - Aprendizaje de programación - En el lenguaje shell de Linux, algunas variables almacenan números, pero al participar en cálculos numéricos, se informa un error. . . ¿porqué es eso?

En el lenguaje shell de Linux, algunas variables almacenan números, pero al participar en cálculos numéricos, se informa un error. . . ¿porqué es eso?

Qué idea más aterradora... Déjame suspirar primero.

¿Hay algún carácter en 98 que no sea número?

Lo has adivinado.

Se ha encontrado el quid del problema,

free=`top -n 1 | grep "Cpu(s):" | awk -F',' '{print $4 }' | awk -F'[.]' '{print $1}' `

Intenta ejecutar echo $free gt; y luego vim test. Verás un espacio delante del número y. cuántos espacios hay delante de él. Un carácter de control que de otro modo sería invisible.

Lo que tengo aquí es

[[m^[(B^[[39; 49m^[[m^[(B 97, y luego después de eliminar los espacios, se convierte en

[[m^[(B^[[39;49m^[[m^[(B97.

Jajaja,

He estado ocupado durante mucho tiempo, y de repente se me ocurrió la idea de generar $free en un archivo y podría ver si hay otros caracteres

Modificación sugerida:

#Utilizo el siguiente método para eliminarlo. Todos los espacios

[root@localhost ~]# free=`echo -n $free| sed 's/ //g'`;

Cambiar a free=`echo - n $free | awk '{print $2}'`

Para filtrar espacios, es mejor extraer números directamente~

Yo soy También soy novato. Originalmente quería usar expresiones regulares para obtener los números... Encontrado. Esto está bien...

Sin puntos... Por favor, dame la mejor respuesta...

Sin puntos...