Как устранить недопустимый номер:-1.00 | убунту

Используйте тест -L (без readlink ), чтобы проверить, является ли файл символической ссылкой.

if [ -L hellolink2 ]

Используйте realpath, чтобы получить абсолютный путь символической ссылки на каталог.

$ realpath hellolink2
/home/ralph/subdir1/hellolink
0
26.02.2020, 10:39
2 ответа

Оболочка не может сравнивать строки, представляющие значения с плавающей запятой в арифметическом контексте. Однако вы можете использовать bcдля оценки логического (целочисленного )значения, которое вы можете использовать в оболочке:

#!/bin/bash

val1=12.23
val2=13.23

difference=$( bc -l <<<"$val1 - $val2" )
range_ok=$( bc -l <<<"$difference >= -1 && $difference <= 1" )

if [ "$range_ok" -ne 0 ]; then
        printf '%s success\n' "$difference"
else
        printf '%s not within range [-1,1]\n' "$difference"
        echo "Failure"
fi
1
28.04.2021, 23:22

Если вы хотите поиграть с awk, вы можете использовать такой скрипт, как:

var1=12.23
var2=13.23
echo |awk -v v1=$var1 -v v2=$var2 '{diff=v1-v2;if(diff >= -1 && diff <=1) print diff " success" ;else printf "%s not within range [-1,1]\nFailure\n", diff }'
0
28.04.2021, 23:22

Теги

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