Nano Hash - криптовалюты, майнинг, программирование

Как выполнить операцию if-else в команде ksh из разбора

Я пытаюсь найти путь к демону с помощью команды which, выполнив следующую команду в сценарии оболочки ksh.

Но если демона нет, он выдает предупреждение в формате..

no DaemonName .....bla bla bla

Но поскольку я не могу отобразить это напрямую, я сейчас делаю это

tmp=`which daemonName`
tmp2=`which daemonName | grep "no DaemonName"`
if [[ "$tmp2" != "" ]]
tmp=wrong name

Как я могу сделать то же самое в простой одной строке?

Чего я действительно хочу, так это того, что если демона нет, он должен выдать строку по умолчанию, а если он присутствует, он должен выдать вывод команд which.

13.04.2012

Ответы:


1

Это установит переменную tmp так, как вы этого хотите:

tmp=$(which daemonName) || tmp="wrong name"

Редактировать: Одной из проблем с этим предложением является то, что поведение команды which не стандартизировано, как демонстрирует нечетная реализация AIX.

При использовании ksh простым обходным решением является замена команды which встроенной командой whence:

tmp=$(whence -f daemonName) || tmp="wrong name"
13.04.2012
  • Я бы сказал, что ваша команда не работает. Подскажите пожалуйста ОС, кш и какие версии используете. 13.04.2012
  • ОС AIX 6.2: P это все, что я знаю: D 13.04.2012

  • 2

    which не сообщает об этой ошибке в моем дистрибутиве, но это, вероятно, сработает для вас:

    tmp=`which daemonName 2> /dev/null`
    ...
    

    По сути, вы просто отбрасываете любые возникающие сообщения об ошибках.

    13.04.2012
  • Но это дало бы мне пустую переменную tmp 13.04.2012

  • 3

    Сделай это:

    tmp=$(which dawmonName 2>/dev/null)
    : ${tmp:=wrong name}
    echo "$tmp"
    

    Часть := назначает текст, если переменная имеет значение null или не установлена. Команда : ничего не делает, кроме того, что разрешает расширение параметра или его аргументов.

    13.04.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..