В чем разница между пакетами telnetd и inetutils -telnetd в Ubuntu?

Основываясь на ответе (, который, похоже, был удален )и экспериментах, которые я провел, я пришел к выводу, что эту (подстановку вложенных команд )следует рассматривать только как «плохую практику» или в лучшем случае «очень громоздкий».

Лучшее, что я мог сделать, это

#!/bin/bash
set -eu -o pipefail -E
shopt -s inherit_errexit

function func1() {
  [[ $? == 0 ]]; return 1 # The boilerplate line
  local arg="${1}"
  echo "(func1)This line shouldn't be reached:arg='${arg}': '${?}'" >&2
}

function func2() {
  echo "value from func2"
  return 1
}

var="$(func1 "$(func2)")" # The line
echo "main:This line shouldn't be reached:var='${var}':'${?}'" >&2

Это приводит к ожидаемому выходному (пустому )и не-нулевому (1 )коду выхода. Хитрость заключается в том, чтобы проверить, является ли $?0в первой строке определения функции. И эта (шаблонная строка )должна быть вставлена ​​для каждого определения функции, которое повторно используется в «подстановке вложенных команд». Если вы хотите использовать синтаксис «вложенной подстановки команд», не беспокоясь, вам нужно ознакомиться с вставкой шаблона каждый раз, когда вы создаете новую функцию.

И действительно ли «Шаблонная линия» безобидна? Видимо, да, верю. Поскольку, если вы set -eu, в любом случае при обнаружении сбоя ожидается немедленный аборт. Но я плохо разбираюсь в программировании на bash и, возможно, упустил какую-то потенциальную ловушку. Очень хотелось бы узнать мнения более опытных людей. Заранее спасибо.

2
19.01.2021, 11:18
1 ответ

telnetdпредоставляет реализацию netkit telnetd, тогда как inetutils-telnetdпредоставляет реализацию GNU Inetutils . Последний поддерживает опцию -lдля принудительного линейного режима, тогда как первый полагается на согласование с клиентом .

В большинстве (, если не во всех )случаях, версия Inetutils telnetdявляется более подходящей, чем версия netkit (в пределах ограничений протокола ).

См. также В чем разница между iputils -ping и inetutils -ping?

2
18.03.2021, 22:36

Теги

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