запуск исполняемого файла оболочки из файла оболочки

$ 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 .

0
08.03.2018, 18:15
1 ответ

Depende un poco en qué contexto planee ejecutar fluxiony 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"
0
28.01.2020, 04:29

Теги

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