有一个脚本,是要读取键盘输入的ip,然后把IP作为变量读取进来 ping $变量,将ping的结果存到日志里。
现在放到前台执行可以
可是后台执行的话,无法读取到键盘输入的变量。
那还有什么办法能实现,当我键盘输入包含ping的命令的时候,会自动把ping的结果写入到一个文件里呢?
请各位老师帮忙,谢谢:) (如果可用的话,会加分)
所谓后台执行,是创建子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中看到结果了。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-06-08
前后意思不一样啊
如果只是要ping自动把结果写入文件
就用重定向就可以了
ping 192.168.0.1 > tmp.ping
这样不就把结果全输入到了tmp.ping文件中了吗
如果只是要ping自动把结果写入文件
就用重定向就可以了
ping 192.168.0.1 > tmp.ping
这样不就把结果全输入到了tmp.ping文件中了吗