[UNIX Shell Script] vragen automatisch beantwoorden

Pagina: 1
Acties:

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 03-02 10:26

Schonhose

Retro Icoon

Topicstarter
Onder UNIX ben ik bezig met een shell-script. Deze roept een programma aan welke een aantal vragen aan de gebruiker stelt. Deze vragen wil ik automatisch beantwoorden.

Dit kan met het programma expect (Zo lees ik op Google) maar dit programma draait niet omdat er geen TCL is geinstalleerd. Dit installeren is geen optie het zijn bedrijfservers die niet onder mijn beheer staan.

De huidige oplossing, die overigens prima werkt is via
Bash:
1
2
3
4
5
cat << END_OF_INPUT |  programmanaam
2
5
2
END_OF_INPUT


Probeem treedt op wanneer ik dit in een functie stop: om het overzicht te bewaren ga ik dan inspringen. Deze characters worden ook meegegeven aan het programma wat natuurlijk niet de bedoeling is.

Zijn er andere oplossingen waarbij ik wel mijn code netjes in kan laten springen welke geen ingewikkelde (third-party) software en installaties vereisen?

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14-02 12:34

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 gokt dat men in Non-Windows Operating Systems meer weet van shell scripting.

>> Non-Windows Operating Systems

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 08:56

odysseus

Debian GNU/Linux Sid

Ik kan daar niet direct een oplossing voor verzinnen, behalve het schrijven van een kort scriptje dat witruimte aan het begin van regels weghaalt...iets als 'sed s/^\s//g'. Dan kan je eerst schrijven hoe je het zelf wilt hebben en dan dat scriptje een vertaalslag laten maken...niet heel mooi en je krijgt van elk bestand dus twee versies (je 'eigen' versie en de werkende versie), maar het werkt wel :).

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • Broer
  • Registratie: Januari 2002
  • Laatst online: 19-12-2025
Wat ik wel eens doe is in het begin van je here-document ook tabs opnemen, het staat raar, maar het inspringen gebeurt zoals je wilt.

Verwijderd

Idee: zet je input in een apart file.

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 09:18
expect is speciaal bedoeld om geautomatiseerd programma's op de console te besturen

vv Goed, voortaan moet ik eerst maar eens goed lezen.. (nooit geweten dat expect dus tcl nodig had)

[ Voor 43% gewijzigd door Jelmer op 06-01-2005 18:04 ]


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Jelmer schreef op donderdag 06 januari 2005 @ 17:45:
expect is speciaal bedoeld om geautomatiseerd programma's op de console te besturen
Schonhose schreef op donderdag 06 januari 2005 @ 16:35:
[...]

Dit kan met het programma expect (Zo lees ik op Google) maar dit programma draait niet omdat er geen TCL is geinstalleerd. Dit installeren is geen optie het zijn bedrijfservers die niet onder mijn beheer staan.

[...]
;)

Overigens zit ik hier met hetzelfde onopgeloste probleem zonder mogelijkheid om externe tools te installeren

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

Ik ben er ook mee bezig geweest en ik heb zelfs de source geprobeerd te doorgronden, maar het bleek niet echt eenvoudig om nu te zien hoe je uberhaupt (met puntjes maar mijn xmodmap is niet goed) *iets* naar een programma kunt sturen (in termen van het OS). Je moet eigenlijk een shell bouwen, en die dan jouw Expect script leest en dan de goede commando's "intypt" gevolgt door een newline. Het probleem met conventionele shells is dat de control over wordt gegeven. Ik wilde zelf ooit een keer zoietsbouwen, maar ik wist eigenlijk niet hoe. Het lijkt erop dat het op bovenstaande manier moet. :*)

[ Voor 4% gewijzigd door Verwijderd op 06-01-2005 18:40 ]


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 03-02 10:26

Schonhose

Retro Icoon

Topicstarter
Broer schreef op donderdag 06 januari 2005 @ 17:33:
Wat ik wel eens doe is in het begin van je here-document ook tabs opnemen, het staat raar, maar het inspringen gebeurt zoals je wilt.
Probleem is dat de tabs ook worden meegegeven als input en het externe programma hier niet mee om kan gaan.
Verwijderd schreef op donderdag 06 januari 2005 @ 17:44:
Idee: zet je input in een apart file.
Is inderdaad een mogelijkheid, maar om het beheersbaar te houden doe ik het liever in het script zelf. Anders krijg ik overal losse files te staan.

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • FCA
  • Registratie: April 2000
  • Laatst online: 12-02 12:04

FCA

Even googlen op expect without tcl:
Expect can also be used from a C or C++ program without Tcl. This is
described in libexpect(3). While I consider this library to be easy
to use, the standalone Expect program is much, much easier to use than
working with the C compiler and its usual edit, compile, debug cycle.
Unlike typical programming, most of the debugging isn't getting the C
compiler to accept your programs - rather, it is getting the dialogue
correct. Also, translating scripts from Expect to C is usually not
necessary. For example, the speed of interactive dialogues is
virtually never an issue. So please try 'expect' first. I suspect it
is a more appropriate solution for most people than the library.
Of ander misschien pexpect als er wel python is geinstalleerd.

Verandert z'n sig te weinig.

Pagina: 1