Используйте тест -L (без readlink ), чтобы проверить, является ли файл символической ссылкой.
if [ -L hellolink2 ]
Используйте realpath, чтобы получить абсолютный путь символической ссылки на каталог.
$ realpath hellolink2
/home/ralph/subdir1/hellolink
Оболочка не может сравнивать строки, представляющие значения с плавающей запятой в арифметическом контексте. Однако вы можете использовать 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
Если вы хотите поиграть с 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 }'