用 Bash 编写计数器(counter) 和 循环结构

大家好,我是一个喜欢研究算法、机械学习和生物计算的小青年,我的CSDN博客是:一骑代码走天涯
如果您喜欢我的笔记,那么请点一下关注、点赞和收藏。如果內容有錯或者有改进的空间,也可以在评论让我知道。😄


Bash 的计数器(counter) 和变量比较

计数器(counter)

在Bash设定计数器和其它语言一样,用等号=就可以了。declare是 Bash內建函数,也是可以用的,但详细用法就不在这里多描述了,有需要的可以​参考这个网页

$ counter=0; echo $counter
0
$ declare -i sum=10; echo $sum # -i:附加int特性 
10

而要对计数器本身的数字进行运算,有四个方法,效果是一样的。

# 方法 1: 在两个括号直接运算
$ counter=0; ((counter=counter+1)); echo $counter
1
# 方法 2: 在两个括号用 +=, -=等运算
$ counter=0; ((counter-=1)); echo $counter
-1
# 方法 3: 用let方法
$ sum=10; let "sum*=2" ; echo $sum
20
# 方法 4: (()) 或 let 配合 ++, -- 使用
$ sum=10; let "sum++"; ((++sum)); echo $sum
12
$ sum=10; let "sum--"; ((--sum)); echo $sum
8

变量比较

sum=10  # 例子变量
# 等于 (-eq)
$ if [ "$sum" -eq 10 ]; then echo "TRUE"; fi
TRUE
# 不等于 (-ne)
$ if [ "$sum" -ne 0 ]; then echo "TRUE"; fi
TRUE
# 大于等于 (-ge)
$ if [ "$sum" -ge 0 ]; then echo "Greater than or Equal to"; fi
Greater than or Equal to
# 大于 (-gt)
$ if [ "$sum" -gt 0 ]; then echo "Greater Than"; fi
Greater Than
# 小于等于 (-le)
$ if [ "$sum" -le 100 ]; then echo "Less than or Equal to"; fi
Less than or Equal to
# 小于 (-lt)
$ if [ "$sum" -lt 100 ]; then echo "Less Than"; fi
Less Than

While-loop 格式

while-loop使用格式:

while CONDITION; do
SOMETHING TO DO;
done

例子:

count=0
while [ "$count" -lt 3 ]; do
  echo "count: $count"
  ((count++))
done

#OUTPUT:
#	count: 0
#	count: 1
#	count: 2

For-loop 格式

For-loop使用格式:

For VARIABLE in {ITERABLE}; do
SOMETHING TO DO;
done

其中有两种方法列出要迭代的物件:

for i in {0..10..5}; do  # 用大括号标注 {start..end..step}
	for j in apple banana mango; do  # 直接列出, 用空格分隔
		echo $i $j;
	done
done

#OUTPUT:
#	0 apple
#	0 banana
#	0 mango
#	5 apple
#	5 banana
#	5 mango
#	10 apple
#	10 banana
#	10 mango

Until-loop 格式

Until-loop使用格式:

Until CONDITION; do
SOMETHING TO DO;
done

与While-loop不同在于,Until-loop的condition是终止条件,而非运行条件。

until [ "$count" -gt 3 ]; do 
	echo "count:$count"; 
	let count+=1; 
done

#OUTPUT:
#	count:0
#	count:1
#	count:2
#	count:3

迴圈控制 (continue, break, exit 1)

continue: 直接跳至下一迴圈
break: 脱离现时的迴圈

for i in {0..5}; do 
	if [ $i -lt 2 ]; then 
		continue;  # 如果 i < 2, 直接跳至下一迴圈
	fi; 
	if [ $i -eq 4 ]; then 
		break; # 如果 i == 4, 脱离迴圈
	fi; 
	echo $i; #根据以上条件,只显示2和3
done

#OUTPUT:
#	2
#	3

另外,如果想退出整个bash程序,可以用exit 1 (在terminal上运行会直接关闭视窗)。


Reference / 参考资料:

  1. https://linuxize.com/post/bash-increment-decrement-variable/
  2. https://zh-hant.hotbak.net/key/bash%20while%E5%BE%AA%E7%92%B0.html
  3. https://www.itread01.com/articles/1476547810.html
  4. https://ithelp.ithome.com.tw/articles/10133249
  5. https://tldp.org/LDP/abs/html/comparison-ops.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值