Я запускаю программу который программа в терминале 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
кто-то может объяснить, какова проблема с этим кодом?
Используя 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