带有要求用户输入的函数的 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
我得到了这个功能:
#!/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