2017-03-21 6 views
-1

Ich habe. SH-Datei, die einige Eingabeaufforderungen werfen wird und ich möchte erwarten, diese Eingabeaufforderungen zu beantworten, damit Skript erfolgreich ausgeführt werden kann. hier ist ein Dateiinhalt:Wie kann 'expect' verwendet werden, um Aufforderungen in der Shell-Datei automatisch zu beantworten?

echo Enter your name 
read name 
echo $name 
echo Enter your age 
read age 
echo $age 

Ich will ‚erwarten‘ dies mit vordefinierten Eingabeaufforderungen zu beantworten, die ich zur Verfügung stellen.

+0

Ihre Frage ist zu weit gefasst. Wo genau stecken Sie fest? Ich denke, Sie sind im Großen und Ganzen vertraut mit * expect *; Wenn nicht, sollten Sie zuerst [einige Beispiele] (http://www.thegeekstuff.com/2010/10/expect-examples/) studieren. – user1934428

+0

Wenn Sie steuern, wie das Skript geschrieben wird, sollten Sie es schreiben, um Eingaben über einen alternativen Mechanismus sammeln zu können und weder interaktive noch echte simulierte Eingaben zu benötigen. Zum Beispiel ist eine Eingabeaufforderung nur dann üblich, wenn Umgebungsvariablen oder Befehlsaufforderungs-Parameter nicht mit den gewünschten Daten festgelegt wurden. –

+0

dh. '[-n" $ name "] || {echo "Gib deinen Namen ein"; Name lesen; } 'liest nur den Namen, wenn es nicht schon vergeben ist. Wenn Sie 'name =" Siddharth "./Yenscript' ausführen, wird der Name über seine Umgebung abgerufen und muss nicht abgefragt werden. –

Antwort

1

Sie brauchen nicht für diese erwarten:

printf "%s\n" "my name" "my age" | ./myscript.sh 

Oder, wenn Ihre Shell sh/ksh/bash ist/zsh

./myscript.sh <<END 
my name 
my age 
END 
Verwandte Themen