为什么命令"read"不起作用?


#!/bin/bash
while read user;
do
echo "Do you want to send the message to $user?"
read response
case $response in
Y|y) echo The message was sent;;
N|n) echo The message was not sent;;
Q|q) exit;;
esac
done < users

为什么这个代码不能在Ubuntu上工作?如果我运行下一个代码,它就完成了;

#!/bin/bash
while read user;
do
echo "Do you want to send the message to $user?"
done < users

您需要从终端读取响应,因此使用</dev/tty作为用户响应。或者更具体地说,/proc/$$/fd/0可以用来接受stdin的输入。

#!/bin/bash
while read user;
do
echo "Do you want to send the message to $user?"
IFS="" read -r response  </dev/tty # OR < /proc/$$/fd/0
case $response in
Y|y) echo The message was sent;;
N|n) echo The message was not sent;;
Q|q) exit;;
esac
done < users

最新更新