df -h если свободное пространство равно тогда | bash - PullRequest
0 голосов
/ 06 апреля 2020

Я получаю ошибку с командой df на ma c, я хотел бы указать значение в гигабайтах и, возможно, позволить пользователю выбрать другой диск, если / заполнен.

destination="$HOME/Desktop/sandbox"

if [ $(df -h --output=avail /|tail -n1) -lt 300000 ]; then

    echo "There is less than 300GB available..." ;
    exit

else

    for files in *.tar ; do echo copying "$files" ; cp "$files" "$destination" ; read -n 1 -p "Press any key..." ; done
fi

Не уверен, если df -h / | хвост -1 | awk '{print $ 4}' | sed 's /..$//' - хороший вариант

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Проблема в том, что вы используете dh -h, что означает «читаемый человеком», и всегда добавляете единицу после числа (M, G, k ...). Есть много вариантов, как вырезать его на grep, awk, cut или sed. Но, возможно, лучший способ - использовать другой параметр, например df -m, чтобы получить вывод в мегабайтах и ​​умножить требуемое пространство.

Также я бы предложил добавить grep $destination (точка монтирования, видимая в выводе df) к отфильтруйте требуемую FS и не полагайтесь на то, что это всегда последняя строка в выводе.

Попробуйте что-то вроде этого:

destination="$HOME/Desktop/sandbox"

free_space=$(df -h | grep $destination | awk '{print $4}')

if [ $free_space -lt $((300 * 1024)) ]; then

    echo "There is less than 300GB available..." ;
    exit

else

    for files in *.tar; do
        echo copying "$files"
        cp "$files" "$destination"
        read -n 1 -p "Press any key..."
    done
fi
0 голосов
/ 06 апреля 2020
destination="$HOME/Desktop/sandbox"

freespace="$(df -h / | tail -1 | awk '{print $4}' | sed 's/..$//')"

if  [ "$freespace" -lt 300 ]; then

    echo "There is less than 300GB available..." ;
    exit

else

    for files in *.sh ; do echo copying "$files" ; cp "$files" "$destination" ; read -n 1 -p "Press any key..." ; done
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...