Sunday, October 30, 2022

[SOLVED] Pause shell script until user presses enter

Issue

When I am reading a file

sample script

while read file
do
temp = $(echo $file)
read -p "Press Enter to continue"
echo $temp
done < test.txt

I want to pause the script until I press ENTER


Solution

read reads from standard input by default, which is redirected to the file, so it's getting the line from the file. You can redirect back to the terminal:

read -p "Press Enter to continue" </dev/tty

Another option would be to use a different FD for the file redirection

while read -u 3
do
    ...
done 3< test.txt


Answered By - Barmar
Answer Checked By - Candace Johnson (WPSolving Volunteer)