Answers:
Nifle完全正确。但是,当您使用多个终端时,需要具体说明。
对于那些来自Google的人,恭喜您找到此页面。如果您需要同时读取循环过程中做任何用户输入(这包括rm -i
,read
或其他任何东西),你可以指定哪些输入管道使用。
这是我使用的此解决方案的一部分:
#in declarations
thistty=$(tty)
lsuser -R LDAP -a home pgrp ALL 2>/dev/null | while read line
do
homedir=$(echo $homedir | awk -F= '{print $2}')
sudo rm -ir "$homedir" < $thistty
done
谢谢Nifle!同时还要感谢bgStack。经过几个小时的搜索,我终于得到了答案!很棒的一个!我使用“ echo $(tty)”来检测我的终端路径,或者只是将其视为变量。对我来说,这是另一个用例。U正在读取文件,并希望确认执行。也许下面的例子可以帮助其他人。
#!/bin/bash
export terminal=$(tty)
cat file | while read val1 val2
do
while true;
do
read -p "would you like to XYZ" yn
case $yn in
[Yy]* ) echo "# Move $val1 to $val2 #";break;;
[Nn]* ) echo "#---------no action----------#";break;;
* ) echo "# Please answer yes or no. #";;
esac
done < $terminal
done
while
从管道中读取...,然后使用重定向从stdin中读取:read something < %terminal
。