从标准输入中读取,停止,然后提示

时间:2018-07-03 19:45:55

标签: bash shell scripting stdin prompt

Bash脚本可以从标准输入中读取行。或者,Bash脚本可以读取提示用户输入的输入。但是,Bash脚本可以同时做到这两个吗?

例如,我希望我的脚本从标准输入中读取多个文件路径,对其进行一些处理,然后提示用户确定是否继续下一步。但是,以下方法不起作用。我用来提示用户的read -p继续从标准输入中读取,获取了一个空值,并认为这是没有响应。

名为test的脚本:

#!/bin/bash

while read line; do
  echo I read a line: \'$line\'
  # Process the line...
done

read -p "Do you want to continue? (y/n) " answer
echo I read answer: \'$answer\'
case ${answer:0:1} in
  y|Y )  echo Do the next step...;;
  *   )  echo Bail;;
esac

echo Done

执行脚本:

[man@machine ~]$ find . -name '*.tif' | test
I read a line: './alpha.tif'
I read a line: './bravo.tif'
I read a line: './delta.tif'
I read answer: ''
Bail
Done

一旦脚本退出while循环,并到达read -p提示用户,是否可以强制脚本等待用户输入?

或者,我只是“做错了”吗? Bash脚本从标准输入中读取并提示用户输入是否不常见?

0 个答案:

没有答案