$ x
- строка. Пользователь может ввести что угодно, это не обязательно число. Проверка ввода происходит после ввода . Вы должны проверить, является ли это целым числом, а затем вы можете выполнить арифметическое сравнение. Например,
read x
#validate if it is an integer
[[ "$x" =~ -?[0-9]+ ]] || echo error
#validate range (this is better done algebraically, not with string manipulation)
(( x >= -100 && x <= 100 )) || echo error
# carry on
, кстати, выражение арифметической оценки в $ ((...))
может использовать имена переменных, а не расширения переменных. Просто напишите $ ((x + y))
.
Решение для пуритан:
x=$(awk '/^-?[0-9]+\s*$/{ if ($1<=100 && $1>=-100){ print; exit; } } { exit 1; }') || echo error
В этом случае awk
читает ввод, а не оболочку, но вы также можете сделать это с помощью read
, а затем отфильтровать результат. Вместо эхо-ошибки
вы можете использовать выражение в цикле (который повторно запрашивает у пользователя другой ввод) или просто выйти с помощью exit 1
.
Depende un poco en qué contexto planee ejecutar fluxion
y qué debería suceder, una vez que finalice esa herramienta.
Opción I:exec
Funciones :no devuelve, guarda procesos
wifi.sh:
#!/bin/sh
PATHTOFLUXION=/usr/local/bin/fluxion
exec $PATHTOFLUXION
echo this code is never reached
Opción II :solo llamando
Características :vuelve, máxima sencillez
wifi.sh:
#!/bin/sh
PATHTOFLUXION=/usr/local/bin/fluxion
$PATHTOFLUXION
echo "I just returned from $PATHTOFLUXION"
Opción III:source
Funciones :Si la herramienta llamada es a su vez un script de shell que también establece las variables a las que desea acceder después de salir de la herramienta, estas se conservan.
#!/bin/sh
PATHTOFLUXION=/usr/local/bin/fluxion
source $PATHTOFLUXION
echo "$PATHTOFLUXION was a shellscript and set $DATAFROMFLUX"