已关闭。此问题需要details or clarity。目前不接受回答。
**要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
22天前关闭
Improve this question的
我使用( )&
尝试了下面的代码,但它没有分配我的IP地址,而且看起来wait
语句不会等待。同样的代码在没有( )&
的情况下也能工作。还有什么其他可能的方法来并行执行这个( )&
代码块?如果我使用花括号,会发生什么?
简单来说
iface[i]是eth0、eth1、eth2、eth3等
nic_count是eth端口的数量。
最初分配所有ip_addr[i]=0。
i=0
while ((i < Snic_count )); do
if [[ ${#ip_addr[$i]} == 0 ]]; then
(
dhclient ${iface[$i]};
sleep 10
ip_addr[$i]=`ip 4 -a show ${iface[$i]} | awk '/inet/ {gsub("/..$","",$2); print $2}'`
if [[ ${#ip_addr[$i]} == 0 ]]; then
echo -e "Unable to assign an IP address for ${iface[$i]}"
fi
)&
fi
1+=1
done
wait
字符串
1条答案
按热度按时间lsmd5eda1#
好了,我终于弄明白了。新的子进程的数据一旦返回到父进程就被销毁了。所以解决方案是我把每个IP地址写到一个外部文件中,比如.(
echo ip_addr[$i] > ip_num$i
)无论如何,如果有人能想出一个主意来避免太多的文件创建,我将不胜感激。字符串