如何在while循环生效后退出bash脚本?

时间:2016-03-07 21:43:43

标签: bash shell

我是bash脚本的新手,我正在尝试编写一个脚本来检查以太网设备是否已启动,如果是,则退出脚本。 这不符合预期,也许有人可以给我一个提示。

我启动脚本,然后插入我的设备,脚本似乎挂断了终端。它没有回到命令行。

当设备已插入并且以太网开发已启动时,脚本运行完美。然后它回应'Connected'并将我抛回命令行。

#! /bin/sh
t1=$(ifconfig | grep -o enxca1aea4347b1)
t2='enxca1aea4347b1'
while [ "$t1" != "$t2" ];
do
    sleep 1;
done
echo "Connected"
exit 0

2 个答案:

答案 0 :(得分:3)

你甚至不需要进行比较;只需检查int[] a = b.Skip(2) .Where(c => c % 4 == (int) Cards.CardSuits.Club) .ToArray(); 的退出状态。

grep

事实上,您甚至不需要t2='enxca1aea4347b1' until ifconfig | grep -q "$t2"; do sleep 1; done echo "Connected" exit 0

grep

答案 1 :(得分:2)

你已经进行了无限循环,因为你没有在while语句中更新$t1的值。

相反,请尝试:

#! /bin/sh
t1=$(ifconfig | grep -o enxca1aea4347b1)
t2='enxca1aea4347b1'
while [ "$t1" != "$t2" ];
do
    sleep 1;
    t1=$(ifconfig | grep -o enxca1aea4347b1)
done
echo "Connected"
exit 0