inet = семейство протоколов Интернета
inet6 = семейство интернет-протокола версии 6
DESCRIPTION
The Internet protocol family is a collection of protocols layered atop the Internet Protocol (IP) transport layer, and utilizing the Internet address format. The Internet family provides protocol support for the SOCK_STREAM, SOCK_DGRAM, and SOCK_RAW socket types; the SOCK_RAW interface provides access to the IP protocol.
DESCRIPTION
The inet6 family is an updated version of inet(4) family. While inet(4) implements Internet Protocol version 4, inet6 implements Internet Protocol version 6.
inet6 is a collection of protocols layered atop the Internet Protocol version 6 (IPv6) transport layer, and utilizing the IPv6 address format. The inet6 family provides protocol support for the SOCK_STREAM, SOCK_DGRAM, and SOCK_RAW socket types; the SOCK_RAW interface provides access to the IPv6 protocol.
# Detect Operating System
function dist-check() {
# shellcheck disable=SC1090
if [ -e /etc/os-release ]; then
# shellcheck disable=SC1091
source /etc/os-release
DISTRO=$ID
# shellcheck disable=SC2034
DISTRO_VERSION=$VERSION_ID
fi
}
# Check Operating System
dist-check
# Pre-Checks
function installing-system-requirements() {
# shellcheck disable=SC2233,SC2050
if ([ "$DISTRO" == "ubuntu" ] || [ "$DISTRO" == "debian" ] || [ "$DISTRO" == "raspbian" ]); then
apt-get update && apt-get install iptables curl coreutils bc jq sed e2fsprogs -y
fi
# shellcheck disable=SC2233,SC2050
if ([ "$DISTRO" == "fedora" ] || [ "$DISTRO" == "centos" ] || [ "$DISTRO" == "rhel" ]); then
yum update -y && yum install epel-release iptables curl coreutils bc jq sed e2fsprogs -y
fi
if [ "$DISTRO" == "arch" ]; then
pacman -Syu --noconfirm iptables curl bc jq sed
fi
}
# Run the function and check for requirements
installing-system-requirements
Отсутствовал $
изDISTRO
Некоторые другие примечания:
function installing-system-requirements()
не является стандартным синтаксисом для определения функций. Синтаксис Bourne/POSIX — installing-system-requirements() compound-command
, function installing-system-requirements {...; }
— это синтаксис Korn. Объединение обоих как это просто работает (в основном случайно )в pdksh, zsh и bash (, хотя некоторые оболочки, такие как busybox sh и yash, добавили поддержку для совместимости с bash ).
(...)
состоит в том, чтобы представить среду подоболочки, которая в большинстве оболочек реализуется путем разветвления дочернего процесса оболочки. Вы бы использовали это только для того, чтобы изолировать часть кода, чтобы изменения в нем не были постоянными. Нет особого смысла использовать их, как здесь.
Сравнение на равенство для утилиты [
— это =
, а не ==
(, хотя некоторые реализации [
понимают ==
так же, как и расширение ).
Здесь у вас есть ряд независимых if
утверждений. Это означает, что если $DISTRO
уже соответствует, например, debian
, вы все равно попытаетесь сравнить его с fedora
. Чтобы избежать этого, вы можете использовать elif
для проверки последовательности:
if [ "$DISTRO" = debian ] || [ "$DISTRO" = ubuntu ]; then
...
elif [ "$DISTRO" = fedora ] || [ "$DISTRO" = centos ]; then
...
fi
Но чтобы сопоставить строку с несколькими значениями или шаблонами, использование конструкции case
сделало бы это намного проще:
case "$DISTRO" in
(ubuntu | debian)...;;
(ferdora | centos)...;;
esac