Сделать это безопасным образом:
sed -e '
s/$/ /
:a;s/ -1 / 9 /;ta
s/.$//
' file1
где
s/$/ /
вставить пробел в конце строки :a;s/ -1 / 9 /;ta
сделать замену (пробел необходим, если -1 в конце строки)s/.$//
удалить пробел в конце строки Если вы хотите, чтобы $tst
интерпретировалась удаленной оболочкой, вам нужно экранировать ее как в expect
, так и в в локальной оболочке, поскольку вы используете EOF без кавычек, чтобы разрешить расширение локальной переменной оболочки.$mypassword
Так что попробуй
send "echo \\\$tst\r"
Таким образом, здесь -документ в локальной оболочке выведет \
и $
, а expect
увидит\$tst
Вы не можете определить переменную tst
таким образом. Взгляните на эту проблему .
Команда представляет собой сценарий TCL, а не bash. Попробуйте использовать следующее:
set tst "just a test string"
send "echo \$tst\r"
Вы можете увидеть результат, если будете печатать с помощьюputs
puts $tst