我想每隔1秒向下放一个界面80次,我怎样才能通过bash脚本实现这个呢?
这样的东西?
COUNT = 80
for n in $(seq -w 1 $COUNT); do
case $n in
[1,3,5,7,9....79]*) # I don't know how to represent the odd value only
ifconfig veth1 down
sleep 1
;;
[2,4,6,8,10....80]*)
ifconfig veth1 up
sleep 1
;;
esac
done
答案 0 :(得分:3)
COUNT=40
for n in $(seq -w 1 $COUNT); do
ifconfig veth1 down
sleep 1
ifconfig veth1 up
sleep 1
done
或者,如果你真的想要数到80:
COUNT=80
for n in $(seq -w 1 $COUNT); do
case $n in
*[13579])
ifconfig veth1 down
;;
*)
ifconfig veth1 up
;;
esac
sleep 1
done
答案 1 :(得分:3)
切换标记:
#!/bin/bash
for ((i = 1, flag = 0; i <= 80; i++))
do
if ((flag ^= 1))
then
ifconfig veth1 down # odd
else
ifconfig veth1 up
fi
sleep 1
done
答案 2 :(得分:2)
使用%运算符。如下所示,用你想要的命令替换echo
count=0
while [ $count -lt 80 ]
do
if (( $count % 2 == 0 ))
then
echo 'aaa'
else
echo 'bbb'
fi
count=$(( $count + 1 ))
done
答案 3 :(得分:0)
如果您不介意这些基础知识,可以通过使用Bash中提供的各种扩展来使您的代码更加简洁。例如:
for i in {1..80}; do
case $((i % 2)) in
0) ifconfig veth1 down ;;
1) ifconfig veth1 up ;;
esac
sleep 1
done
这里的神奇之处在于{1..80}
序列表达式,与模运算符结合使用以确定数字是奇数还是偶数。如果您的Bash版本因任何原因不支持序列表达式,请改用$(seq 1 80)
。