シェルスクリプトにて expect コマンドを使う場合の中身の最後は "expect" を書いておかないと止まってほしいところで止まってくれない

結論

以下の例でいう、最後の expect "Starship installed" の部分です。ここを書いておいた方がいいです。

この部分がないと send "yes\n" の結果を表示し終わる前にシェルスクリプトが先に進んでしまい、予想しないことが起き得ます*1

expect -c '
  set bold_black "\033\[1m"
  spawn sudo /home/username/dotfiles/install_starship.sh
  expect "? ${bold_black}\\\[y/N\\\]"
  send "yes\n"
  expect "Starship installed"
'

*1:何よりログが並列に流れて読みにくい

Powered by はてなブログ