一.(( ))
注意事项:
1.括号里边使用变量时,变量名前边的$可以省略,但是每次书写时最好将$加上,防止出现错误
2.运算符的前后空格可以省略
3.括号里边的运算符可以代替c语言的任何算数运算,同时还能使用更复杂的一些运算
4.一些标点符号需要转义才能使用,需要格外注意,如
\(\) ----> 这是小括号的用法
\< ----> 这是小于的用法
\> ----> 这是大于的用法
格式一般如下:
((表达式1,表达式2,表达式3.....))
最后一个表达式的结果就是整个表达式的结果
例如求1-100的和
#!/bin/bash #这种就是调用bash解析器
#1-100求和
sum=0
for i in `seq 1 100` #这里用到了命令置换符和for循环语句
do
((sum += i)) #sum存储了前边1到99的和然后进入循环执行最后一次就是sum=sum+100
done
echo "sum = $sum" #输出1-100的和
seq这个函数 是打印一个数字序列
# seq 1 2 100 这里的意思是每次打印间隔为2,打印范围是1-100 如1 3 5....
通过打印这个序列将1-100赋值给i这个变量然后循环执行sum=sum+i执行一百次
二.$[]
1.格式
ret=$[表达式1,表达式2,表达式3.....]
这种类似于c语言中学的逗号运算符ret=(表达式1,表达式2,表达式3)
eg:
ret=$[1+2,3+4,5+6]
echo "ret = $ret" #这时ret等于11
使用$[]时需注意必须要有一个变量去接否则会报错
三.let
格式:
let sum=var1运算符var2
注意:
1.let必须放到整个语句的最前边(重点)
2.运算符两边不允许有空格,等号两边也不能有空格(重点)
3.变量前边的$最好加上,不加也不会报错
eg:
let sum=(1+2)*3
echo "sum = $sum"
四.expr
格式:
expr 表达式
注意:
1.使用变量时,必须要加$(重点)
2.运算符的前后必须加空格
eg: expr $value1 + $value2
3.expr不能进行自增自减运算
eg:expr $value++ #这种是错误的
eg:expr $value + 1 #这种是可以的
4.expr使用部分运算符时必须要用\转义
5.expr使用变量时必须使用双引号将变量括起来
6.将expr的结果赋值给一个变量需要用到命令置换符
eg:ret=`expr "$value1" + "$value2"`
处理字符串经常会使用到expr
1.expr match STRING REGEXP
#从STRING字符串中第一个字符开始匹配REGEXP字符串,匹配成功返回匹配的字符个数,失败返回0
eg: str=www.baidu.com
expr match $str "www.baidu"
9 #结果
2.expr substr STRING POS LENGTH
#从STRING字符串中第POS位置开始截取长度为LENGTH的字符串,将截取的字符串返回(注意:字符串的第一个字符是1不是0)
eg: str=www.baidu.com
expr substr $str 1 3
www #结果
3.expr index STRING CHARS
#查找CHARS字符在STRING串中出现的位置,返回值是字符串的下边(注意:字符串的第一个字符是1不是0)
如果出现相同的字符,匹配到第一个就会结束查找
eg: str=www.baidu.com
expr index $str .
4 #结果
4.expr length STRING
#计算字符串的长度
eg: str=www.baidu.com
expr length $str
13 #结果
五.if语句的使用
格式:
1.if [ 表达式 ] #注意[]里边表达式前后需要有空格,shell中if语句不能使用花括号括住需要执行的语句
then
shell语句
fi
eg:if [ a > b ]
then
echo "a"
fi
2.if [ 表达式 ]
then
shell语句
elif [ 表达式 ]
then
shell语句
else
shell语句
fi #结束时需要将if反着写表示if语句写完了
在使用时一定要注意[ ]里边全部加空格,另外[ ]的本质就是一个test的命令
如果表达式需要用到 && 或者 ||时,必须分成两个[ ]来写
eg:if [ -z "str1" ] || [ -z "str2" ]
这里是判断两个字符串是否为空
六.case in语句
格式
case $value in
表达式1)
shell语句
;;
表达式2)
shell语句
;;
.....
*) #这里的*表示其他情况类似于default
shell语句
;; #这里类似于break
#!/bin/bash
read -p "请依次输入数字符号数字 > " num1 symbol num2
value=$(($num1 $symbol $num2))
case $symbol in
'+')
echo "add=$value"
;; # 在shell中case分支中的;;不能省略,除了最后一个
'-')
echo "sub=$value"
;;
'*')
echo "mul=$value"
;; # 最后一个分支的;;可以省略
esac
七.while语句
格式
while [ 表达式1]
do
循环体
done
八.for循环语句
格式
1.for ((表达式1;表达式2;表达式3))
do
循环体
done
eg:
for ((i=0;i<=100;i++))
do
((sum=sum+i))
done #1-100求和
2.for var in 单词列表
do
循环体
done
eg:
for i in `seq 1 100`
do
((sum=sum+i))
done #1-100求和
九.select in语句
格式
select var in 选项列表
do
语句
done
eg:
select var in windows MAC Android
do
echo "$var"
done #输出选项前的编号就会将选项打印出来和case in一般连用
十.break和continue关键字
1.break 主要是退出本层循环的
后边跟着一个数字表示退出几层循环
eg: break 2 表示退出两层循环
2.comtinue 主要是用来退出的本层的本次循环
后边跟着一个数字表示退出本层的几次循环
eg: continue 2 表示退出本层的两次循环