El comando df funciona en la terminal, pero no en el script bash

1 minuto de lectura

avatar de usuario
Deuce1912

Encontré el siguiente código en un sitio web. Sé lo que hace y lo entiendo, pero no consigo que funcione correctamente. Cuando lo ejecuto en Redhat 6.10, aparece un error que dice “línea 6: [: /: integer expression expected”.

When I run the df code from the CURRENT variable in the terminal it outputs “21”. When it’s in the script, it outputs “https://stackoverflow.com/”.

What I’m trying to get it to do is e-mail me if the “https://stackoverflow.com/” directory gets over 50%. Any ideas why the df portion of the code is working in the terminal, but not in the script?

#!/bin/bash

CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
THRESHOLD=50

if [ "$CURRENT" -gt "$THRESHOLD" ] ;  luego mail -s 'Alerta de espacio en disco' CORREO ELECTRÓNICO ELIMINADO 

  • Divida el comando en partes cada vez más cortas, ejecútelo dentro y fuera del script y vea qué es diferente. También podrías intentar type dfdentro y fuera del script, para ver si usa un diferente df.

    – ams

    3 de junio de 2020 a las 20:34

  • Puedes decir df qué generar seleccionando --output[=FIELD_LIST]p.ej df / --output=pcent.

    usuario2849202

    3 de junio de 2020 a las 23:33


Podrías usar:

CURRENT=$(df / --output=pcent | tail -n1 | sed 's/%//g')

  • Cuando escribo "escriba df" tanto en la terminal como en el script, dice que df está en /bin/df. He desglosado la parte del script ACTUAL y obtengo un retorno de 21 desde la terminal. Cuando lo hago en el script me da el error entero. Cuando trato de usar --output=pcent, obtengo "línea 6: [: /: integer expression expected"

    – Deuce1912

    Jun 4, 2020 at 4:00


¿Ha sido útil esta solución?