Expect Script - awk говорит, что переменная не существует - PullRequest
0 голосов
/ 22 января 2020
#!/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 ........... в строке, она возвращает то, что мне нужно. Любая помощь по запуску этого файла из моего ожидаемого файла была бы полезна. Благодаря.

1 Ответ

1 голос
/ 22 января 2020

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

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

...