Сначала установите путь с помощью этой команды:
set path="paste the set path address"
Затем вам нужно загрузить программу. Введите «cd (имя папки)» в сохраненный диск и скомпилируйте его. Например, если моя программа, хранящаяся на диске D, введите «D:», нажмите enter и введите «cd (имя папки)».
Код возврата доступен в специальном параметре $?
после выхода команды. Как правило, вам нужно использовать его только тогда, когда вы хотите сохранить его значение перед запуском другой команды:
valid_ip "$IP1"
status1=$?
valid_ip "$IP2"
if [ $status1 -eq 0 ] || [ $? -eq 0 ]; then
или если вам нужно различать различные ненулевые статусы:
valid_ip "$IP"
case $? in
1) echo valid_IP failed because of foo ;;
2) echo valid_IP failed because of bar ;;
0) echo Success ;;
esac
В противном случае вы позволяете различным операторам проверять это неявно:
if valid_ip "$IP"; then
echo "OK"
fi
valid_IP "$IP" && echo "OK"
Вот простой, идиоматический способ записи valid_ip
:
valid_ip () {
local ip=$1
[[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] && {
IFS='.' read a b c d <<< "$ip"
(( a < 255 && b < 255 && c < 255 && d << 255 ))
}
}
Есть два выражения: [[...]]
и { ... }
; к ним присоединяются &&
. Если первый сбой, то valid_ip
терпит неудачу. Если это произойдет, то выполняется второе выражение (составной оператор). read
разбивает строку на четыре переменные, и каждый из них проверяется отдельно внутри арифметического выражения. Если все верно, то ((...))
преуспевает, что означает, что список &&
преуспевает, а это означает, что valid_ip
преуспевает. Нет необходимости хранить или возвращать явные коды возврата.
Нет необходимости в круглых скобках, если проверяется состояние выхода:
if valid_ip $IP ; then
...
Просто вызовите функцию так, как вы вызовете любую другую команду.