带有要求用户输入的函数的 While 循环

While loop with function that asks for user input

我得到了这个功能:

#!/bin/bash
prompt() {
read -r -p "${1:-Usunąć podany plik? [t/N]} " response
case "$response" in
    [tT][eE][sS]|[tT])
        true
        echo "Usuwam... $line"
        ;;
        *)
        false
        echo "Pomijam... $line"
        ;;
esac
}

我希望它在从 .txt 文件逐行读取的循环中工作:

while IFS= read -r line
        do
            echo "$line" && prompt
        done < lista.txt

因为我 运行 这里的脚本是输出(它实际上并不提示用户输入):

11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI2.pdf
Pomijam... 11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI2.pdf
11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI4.pdf
Pomijam... 11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI4.pdf
11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI6.pdf
Pomijam... 11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI6.pdf

如果我使用这个循环,lista.txt 文件看起来像这样:

while IFS= read -r line
        do
            echo "$line"
        done < lista.txt

输出:

11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI2.pdf
11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI3.pdf
11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI4.pdf
11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI5.pdf
11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI6.pdf
11M /home/kamil/TEST/FOLDER ZE SPACJAMI/PLIK ZE SPACJAMI.pdf

我希望它在读取每一行时提示用户输入。

您需要更改的行是:

read -r -p "${1:-Usunąć podany plik? [t/N]} " response < /dev/tty