1

I've written a script to handle quick copying of passwords to the clipboard:

#!/usr/bin/expect -f

spawn -noecho zsh
expect "$ "
send "pass show -c "
interact
exit

This script is launched like this:

urxvt -e /home/user/pass_script.sh

The script runs well, but after finishing, the spawned urxvt terminal needs to close. It doesn't do so as of now. How can I make sure it does?

Exeleration-G
  • 7,535
  • 14
  • 59
  • 97
  • 1
    does it auto close for other commands like `urxvt -e sleep 5`? if yes, try `urxvt -e expect -d /home/user/pass_script.sh` and see what's the problem. – pynexj Nov 27 '18 at 13:51
  • That code is fine. The problem, I'm guessing, is what the `pass` command does after you hit enter. Does it ever end? – glenn jackman Nov 27 '18 at 18:14
  • @pynexj: yes, it does close after running `urxvt -e sleep 5`. running with debug flag doesn't show me what goes wrong; the script will just copy my password to clipboard and return with a new prompt (instead of exiting). @glenn jackman: well, I have to add my desired password ID after the already entered `"pass show -c "`. After entering my ID, zsh will return with a prompt instead of exiting. – Exeleration-G Nov 27 '18 at 18:38
  • just replace `interact` with `expect "$ "` – pynexj Nov 28 '18 at 03:36

1 Answers1

1

This works:

#!/usr/bin/expect -f
set timeout -1
spawn -noecho bash
expect "$ "
send "pass show -c " 
interact -nobuffer \r return
expect "Copied"
sleep 0.05
Exeleration-G
  • 7,535
  • 14
  • 59
  • 97