Вы могли проверить отдельно целые и дробные части:
#!/bin/bash
min=12.45
val=12.35
if (( ${val%%.*} < ${min%%.*} || ( ${val%%.*} == ${min%%.*} && ${val##*.} < ${min##*.} ) )) ; then
min=$val
fi
echo $min
Как освобождено говорит в комментариях, это работает, только если оба числа имеют дробные части, и обе дробных части имеют то же количество цифр. Вот версия, которая работает на целое число или дробный и любой оператор удара:
#!/bin/bash
shopt -s extglob
fcomp() {
local oldIFS="$IFS" op=$2 x y digitx digity
IFS='.' x=( ${1##+([0]|[-]|[+])}) y=( ${3##+([0]|[-]|[+])}) IFS="$oldIFS"
while [[ "${x[1]}${y[1]}" =~ [^0] ]]; do
digitx=${x[1]:0:1} digity=${y[1]:0:1}
(( x[0] = x[0] * 10 + ${digitx:-0} , y[0] = y[0] * 10 + ${digity:-0} ))
x[1]=${x[1]:1} y[1]=${y[1]:1}
done
[[ ${1:0:1} == '-' ]] && (( x[0] *= -1 ))
[[ ${3:0:1} == '-' ]] && (( y[0] *= -1 ))
(( ${x:-0} $op ${y:-0} ))
}
for op in '==' '!=' '>' '<' '<=' '>='; do
fcomp $1 $op $2 && echo "$1 $op $2"
done
Я предпочел бы устанавливать vpn (openvpn, например) с сервером на Вашей машине и клиентом на машине Вашего друга. Когда он хочет, чтобы Вы соединились, он открывает vpn (никакой вход в систему, включенный на Вашей машине), и Вы открываете свой клиент удаленного рабочего стола для IP его машины (по крайней мере, с openvpn, можно присвоить "фиксированный" IP его машине, таким образом, можно сохранить его, не будучи должен посмотреть на него каждый раз).
Таким образом, у Вас нет входа в систему Вашей машины, и Вы только получаете доступ к его машине, когда он открывает VPN. С другой стороны можно завершить работу сервера, когда Вы не хотите, чтобы он соединился с Вашей машиной. Так или иначе, если Вы не даете ему пользователя на своей машине (или пользователь только с доступом, Вы хотите), он не сможет к очень там.
И этот путь, можно сделать это с большим количеством друзей легко в случае необходимости, поскольку они только должны установить клиента VPN.
Если я читаю вопрос правильно, он кажется, что у Вас есть ssh туннелирующая сторона вещей вниз, но Вы хотите запустить программы как свой собственный пользователь на машине Вашего друга, вместо того, чтобы выполнить их на его сессии. Существует много серверов VNC (tightvnc, то, что я использую, это довольно твердо), которые создают виртуальный рабочий стол, работающий в фоновом режиме, который можно затем подключить с, вместо того, чтобы подключить Вас к сессии, это в настоящее время активно на компьютере Вашего друга.
После того как у Вас есть tightvnc, установленный на машине Вашего друга, можно работать "tightvncserver:1" для запуска рабочего стола на другом дисплее и затем порта передачи 5901 (5900 + число дисплея) к машине.
Обратите внимание, что рабочий стол по умолчанию является довольно запасным; можно настроить то, что работает, когда tightvnc запускает в ~/.vnc/xsession сценарий на удаленной машине.
Вот немного отличающийся подход, который я использовал успешно в течение нескольких лет теперь. Это требует некоторой установки на Вашем конце, но делает его до полусмерти простым для Ваших удаленных друзей.
Сначала необходимо установить Клиент Одиночного нажатия UltraVNC. После того как у Вас есть клиент в руке, можно послать по электронной почте удаленному пользователю и когда они выполнят ее, она соединится с vnc клиентом, который работает в режиме слушателя. Думайте об этом как о vnc соединении наоборот. Можно читать больше об обратных соединениях, UltraVNC SC, и т.д. здесь.
Lifehacker делает хорошее задание, объясняющее, как установить все это здесь.