2017-10-26 4 views
0

Ich versuche, ein Expect-Skript in eine Datei zu echo, so dass ich es im laufenden Betrieb ausführen kann. HierIch versuche, ein Expect-Skript in eine Datei zu wiederholen, aber kein Erfolg

ist das, was ich bisher:

#!/bin/bash 

echo '#!/usr/bin/expect -f' > expect_file 
echo 'expect "\[RETURN\]" {send "\r"}' >> expect_file 

, die mir ergeben eine Datei mit den folgenden:

#!/usr/bin/expect -f 
"}pect "\[RETURN\]" {send " 

Wenn ich versuche, und verwenden Sie Echo und die Flucht der Zitate:

#!/bin/bash 

echo '#!/usr/bin/expect -f' > expect_file 
echo "expect \"\[RETURN\]\" {send \"\r\"}" >> expect_file 

cat expect_file 
exit 0 

Der Expect-Befehl und Teile der Linie werden nicht ausgegeben

#!/usr/bin/expect -f 
"}pect "\[RETURN\]" {send " 
#!/usr/bin/expect -f 
"}pect "\[RETURN\]" {send " 

Wie kann ich die folgenden Codezeilen in meinem Bash-Skript selbst in eine Datei einfügen?

#!/usr/bin/expect -f 
expect "\[RETURN\]" {send "\r"} 
expect ":" {send "q"} 
expect "otherwise:" {send "y\r"} 
expect eof {exit} 
+0

Sind Sie sicher, dass Sie das Skript mit 'bash' ausführen? Dieses Ergebnis ist konsistent mit einer POSIX-konformen Implementierung von echo, wobei '\ r' im Argument von' echo' als ein literaler Wagenrücklauf behandelt wird. Wenn Sie die resultierende Datei mit 'cat' anzeigen, erscheint am Anfang der Zeile das abschließende'} '. – chepner

Antwort

1

Mit echo

#!/bin/bash 
echo -e '#!/usr/bin/expect -f\nexpect "\\[RETURN\\]" {send "\\r"}\nexpect ":" {send "q"}\nexpect "otherwise:" {send "y\\r"}\nexpect eof {exit}' > expect_file 

ODER

#!/bin/bash 
echo '#!/usr/bin/expect -f 
expect "\[RETURN\]" {send "\r"} 
expect ":" {send "q"} 
expect "otherwise:" {send "y\r"} 
expect eof {exit}' > expect_file 

ODER

#!/bin/bash 
echo '#!/usr/bin/expect -f' > expect_file 
echo 'expect "\[RETURN\]" {send "\r"}' >> expect_file 
echo 'expect ":" {send "q"}' >> expect_file 
echo 'expect "otherwise:" {send "y\r"}' >> expect_file 
echo 'expect eof {exit}' >> expect_file 
+0

Ich mag das zweite Beispiel auch. –

2

Verwenden Sie kein Echo. Verwenden Katze:

cat << 'EOF' > expect_file 
#!/usr/bin/expect -f 
expect "\[RETURN\]" {send "\r"} 
expect ":" {send "q"} 
expect "otherwise:" {send "y\r"} 
expect eof {exit} 
EOF 
+0

Direkt am. Hat super funktioniert. Vielen Dank. –

Verwandte Themen