Ожидаемый сценарий, встроенный в оболочку: как указать значение, определенное в удаленной оболочке?

Сделать это безопасным образом:

sed -e '
   s/$/ /
   :a;s/ -1 / 9 /;ta
   s/.$//
' file1

где

  • s/$/ /вставить пробел в конце строки
  • :a;s/ -1 / 9 /;taсделать замену (пробел необходим, если -1 в конце строки)
  • s/.$//удалить пробел в конце строки
2
01.11.2019, 12:06
2 ответа

Если вы хотите, чтобы $tstинтерпретировалась удаленной оболочкой, вам нужно экранировать ее как в expect, так и в в локальной оболочке, поскольку вы используете EOF без кавычек, чтобы разрешить расширение локальной переменной оболочки.$mypassword

Так что попробуй

send "echo \\\$tst\r"

Таким образом, здесь -документ в локальной оболочке выведет \и $, а expectувидит\$tst

2
27.01.2020, 22:07

Вы не можете определить переменную tstтаким образом. Взгляните на эту проблему .

Команда представляет собой сценарий TCL, а не bash. Попробуйте использовать следующее:

set tst "just a test string"
send "echo \$tst\r"

Вы можете увидеть результат, если будете печатать с помощьюputs

puts $tst
0
27.01.2020, 22:07

Теги

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