linux的shell在后台执行是否可以读取键盘输入的字符串
有一个脚本,是要读取键盘输入的ip,然后把IP作为变量读取进来ping$变量,将ping的结果存到日志里。现在放到前台执行可以可是后台执行的话,无法读取到键盘输入的变量。...
有一个脚本,是要读取键盘输入的ip,然后把IP作为变量读取进来 ping $变量,将ping的结果存到日志里。
现在放到前台执行可以
可是后台执行的话,无法读取到键盘输入的变量。
那还有什么办法能实现,当我键盘输入包含ping的命令的时候,会自动把ping的结果写入到一个文件里呢?
请各位老师帮忙,谢谢:) (如果可用的话,会加分) 展开
现在放到前台执行可以
可是后台执行的话,无法读取到键盘输入的变量。
那还有什么办法能实现,当我键盘输入包含ping的命令的时候,会自动把ping的结果写入到一个文件里呢?
请各位老师帮忙,谢谢:) (如果可用的话,会加分) 展开
2个回答
展开全部
所谓后台执行,是创建子shell,由shell的子进程去执行的。
而用户输入在当前shell,这样显然是不可能被后台进程读到的。
可以考虑从文件中去读:
============= test.sh ==============
#!/bin/bash
while true
do
if [ -f file.txt ]; then
read ip <file.txt
[ -n "$ip" ] && ping -c 1 "$ip" >>result.txt
fi
sleep 1
done
运行 ./test.sh &
用户输入 echo 172.16.0.11 >file.txt
等一段时间后就可以在result.txt中看到结果了。
而用户输入在当前shell,这样显然是不可能被后台进程读到的。
可以考虑从文件中去读:
============= test.sh ==============
#!/bin/bash
while true
do
if [ -f file.txt ]; then
read ip <file.txt
[ -n "$ip" ] && ping -c 1 "$ip" >>result.txt
fi
sleep 1
done
运行 ./test.sh &
用户输入 echo 172.16.0.11 >file.txt
等一段时间后就可以在result.txt中看到结果了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询