Возвратите ошибку [: недопустимое число: 100k

Я запускаю программу который программа в терминале Ubuntu с входом следующим образом

100k

ExampleFile

~/

и код программы

#!/bin/sh
#!/bin/bash
​
echo "File size you want to archive"
read size
​
echo "File name to archive"
read name
​
echo "Path to archive"
read path
​
echo "Size is: $size filename is: $name path is: $path"
​
a=99
b=100
​
if [ "$size" -lt $a ] #line 19
then
    echo "File is small. Refused to archive"
elif [ "$size" -lt $b ] #line 22
then
    find "$path" -type f -size "$size" | tar cvzf ~/"$name".tar.gz
else
    echo "Wrong input"
fi

После выполнения это возвращает ошибку

./try.sh: 18: [: Недопустимое число: 100k

./try.sh: 21: [: Недопустимое число: 100k

кто-то может объяснить, какова проблема с этим кодом?

0
задан 7 February 2020 в 09:18

1 ответ

Используя numfmt преобразовать человекочитаемую строку в число.

#!/bin/bash

echo "File size you want to archive"
read size

echo "File name to archive"
read name

echo "Path to archive"
read path

echo "Size is: $size filename is: $name path is: $path"

a=99000
b=100000

num=$(numfmt --from auto "$size" 2>&-)

if [[ -z $num ]]
then
    echo "Invalid size!"
    exit 1
fi

if (( $num < $a )) #line 19
then
    echo "File is small. Refused to archive"
elif (( $num <= $b )) #line 22
then
    find "$path" -type f -size +$((num - 1))c ! -size +${b}c | tar cvzf ~/"$name".tar.gz
else
    echo "file is too large!"
fi
0
ответ дан 20 February 2020 в 22:58

Другие вопросы по тегам:

Похожие вопросы: