Usted solo usa el programa Expect en su Powershell. Funciona. Powershell también es un caparazón, puedes ejecutar código escrito por powershell, que llama al código bash, que vuelve a llamar a powershell.
El fuelle es una prueba, se aprobó.
It "can work with tcl expect" {
$bs = @'
echo "Do you wish to install this program?"
select yn in "Yes" "No"; do
case $yn in
Yes) echo "install"; break;;
No) exit;;
esac
done
'@
$bsf = New-TemporaryFile
$bs | Set-Content -Path $bsf
$tcls = @'
#!/bin/sh
# exp.tcl \
exec tclsh "$0" ${1+"[email protected]"}
package require Expect
set timeout 100000
spawn {spawn-command}
expect {
"Enter password: $" {
exp_send "$password\r"
exp_continue
}
"#\? $" {
exp_send "1"
}
eof {}
timeout {}
}
'@
$tclf = New-TemporaryFile
$tcls -replace "{spawn-command}",("bash",$bsf -join " ") | Set-Content -Path $tclf
"bash", $tclf -join " " | Invoke-Expression
Remove-Item $bsf
Remove-Item $tclf
}
Déjame explicarte la prueba.
- crean un archivo bash que espera una entrada.
- crear un archivo tcl que invoque a bash creado en el paso uno.
- invoke el programa tcl de powershell, funciona, no espera la entrada.