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脚本从标准输入中读取并提示用户输入是否不常见?