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

Ожидайте скрипт - awk говорит, что переменная не существует

#!/usr/bin/expect -f

set name [lindex $argv 0]

send  "grep $name /usr/local/bin/c | awk '{print $3}' | awk '{print substr($1,10)}'\r"
spawn  grep $name /usr/local/bin/c | awk '{print $3}' | awk '{print substr($1,10)}'

Я пробовал «\» экранировать кавычки и специальные символы. Это не работает. Я также пытался отправить и спавнить. Не работает. Если я запускаю только команду grep........... в строке, она возвращает то, что мне нужно. Любая помощь в том, как заставить это работать из моего ожидаемого файла, была бы отличной. Спасибо.

22.01.2020

  • Сначала упростите свою команду — для этой задачи вам не нужны grep, 2 awks и каналы. Если бы вы запускали его в командной строке, это было бы awk -v n="$name" '$0 ~ n{print substr($3,10)}' /usr/local/bin/c, так что это команда, которую вы должны попытаться заставить работать, используя expect. Я бы начал с попытки заставить работать более простую команду, например awk 'BEGIN{print "hello world"}'. 22.01.2020
  • Спасибо. Я все еще получаю сообщение об ошибке: не могу прочитать 0: нет такой переменной при выполнении spawn awk -v n=perferx '$0 ~ n{print substr($3,10,5)}' /usr/local/bin/c. Есть мысли что попробовать. Спасибо. 22.01.2020
  • Я не хотел предложить вам просто подключить этот awk-скрипт к ожидаемому скрипту, и он заработает, я просто сказал, что это скрипт командной строки для начала. Я уже высказал свои мысли о том, что можно попробовать — начните с попытки заставить работать более простую команду, например awk 'BEGIN{print "hello world"}'. 22.01.2020

Ответы:


1

Одинарные кавычки не имеют особого значения в expect. Вместо этого используйте фигурные скобки для того же эффекта:

spawn awk -v n="perferx" {$0 ~ n {print substr($3,10,5)}} /usr/local/bin/c
# .......................^..............................^

Ссылка: Правила синтаксиса Tcl, #6

Никакие замены не выполняются для символов между фигурными скобками


Кроме того, не видя, что вы делаете с выводом, возможно, вам не нужно spawn

set output [exec awk -v n="perferx" {$0 ~ n {print substr($3,10,5)}} /usr/local/bin/c]

Теперь вы можете выполнять простой синтаксический анализ строки в $output.

22.01.2020
  • Это было то, что мне нужно, но в переменную. Мне стало намного легче выполнять то, что я делал. Я видел это в другом посте, но мне это было не очень понятно. 22.01.2020
  • expect — очень полезный инструмент, но на самом деле он имеет очень узкое применение. Как только вы поймете, что expect построен на Tcl, и у вас есть мощный язык общего назначения, все становится проще. 22.01.2020
  • Новые материалы

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

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

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

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

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

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

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