shell脚本中 if 、for 命令使用方法

本文深入讲解Shell脚本中if条件语句和for循环语句的使用方法,包括语法细节、常见错误及示例代码。特别强调了表达式、运算符、字符串比较以及for循环的多种用法。

1. if 语句的使用

if语句的语法:if [ ! -f "${file}" ]; then如果有else,为:

if [ ... ]; then
	...
elif ...; then
	...
else
	...
fi 

eg: 判断某一个文件是否存在

file="test/1/hello.txt"
if [ ! -f test/1/hello.txt ]; then
# if [ ! -f "${file}" ]; then
	echo "file is not exist"
else
	echo "file is exist"
fi

注意:

  • 表达式和运算符之间要有空格

  • if和[之间也要有空格,for循环一定有空格

  • 在比较时,=前后各有一个空格。如果忘记加空格,那就不是比较关系了,而是变成了赋值语句

    • 是变量定义的时候变量和=之前不能有空格。eg:val='expr 2 + 3'

字符串比较

进行字符串比较时,最好用双中括号,因为有时候采用单个中括号会产生错误。

  • 双中括号是Bash的一个扩展特性。如果出于性能考虑,使用ash或dash来运行脚本,那么将无法使用该特性。

示例:
测试两个字符串是否相同:

  • [[ $str1 = $str2 ]]:当str1等于str2时,返回真。也就是说,str1和str2包含的文本是一模一样的。
  • [[ $str1 == $str2 ]]:这是检查字符串是否相同的另一种写法

2. for语句使用

for循环的正确写法:

for VARIABLE in 1 2 3 4 5 .. N
do
	command1
	command2
	commandN
done

如何使用for遍历一个string字符串:
可以采用如下方法:

pull_project="dependency dependency_arm dependency_ubuntu”

for val in $pull_project; do
  echo "$val..."
done

注意: for、do关键字是分开的,如果要把多行写在一起,使用;分离开。eg:for i in {0..3}; do echo "i = $i" ;done

for index in {0..3}
do 
	echo "index=$index"
done 
  • 复杂一点的for
for i in {0..10..2} #bash 4.*以上版本才支持

for i in $(seq 1 2 20) #已经过时的用法,mac下还支持 
#语法 (seq start [interval] end),其中的interval是可选的,默认为1
# eg:seq(10 5 20)输出10,15,20,以5为距离,从10开始增加
# seq也支持下面这种写法

END=${#a[@]}
for i in $(seq 1 $END); do echo $i; done

for((c=1; c<= 5; c+=2)) #三个表达式实现一个for循环,是自己熟悉的版本
for (( ; ; )) #无限循环,相当于while(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值