语法
引号
-
" "
:如果有字符串,字符串原样输出,如果有$变量则查看变量的值 -
' '
:所有的字符无论是否有变量都原样输出 -
ˋˋ
:在该引号包含的范围内部都按照命令执行
1 + 1
==>expr 1 + 1
expr
expr
命令一般用于整数值,但也可用于字符串。
-
算术运算
+ - \* \
num=9
sum=`expr $num \* 6`
echo $sum
注意:
1、不能用()
,使用\( \)
2、乘法运算\*
需要屏蔽原*号含义(匹配字符),例如expr 12 + 5 \* 1
3、在运算符与运算数之间要有空格
-
逻辑运算
& |
-
比较运算
< <= = == != >= >
,其中< >
要用\< \>
-
字符串匹配
string : REGEX
, 使用REGEX
匹配string
,REGEX
被视为正则表达式(REGEX
隐含了^
,匹配从首字母开始)expr test.txt : \(.*\).txt # 输出匹配到的字符串 expr test.txt : te. # 输出匹配到的字符串数量
-
返回字符出现位置
index string chars
在shring
中查找chars
出现的位置expr index helloworld w
-
截取字符串
substr string pos len
从string
中取出从pos
位置开始长度为len
的子字符串expr substr helloworld 5 5
-
获取字符串长度
length string
获取string
的长度expr length helloworld
-
将关键字转为普通字符串
+
expr index + length g
if…then…fi
语法结构为:
if 表达式
then 命令表1
else 命令表2
fi
例:
read A B
if [ $A -gt $B ]
then
echo "A 大于 B"
fi
# then可以写在if后面用;隔开
if [ $A -gt $B ]; then
echo "A 大于 B"
fi
注意:[]中的内容和[]要有空格
if…elif…else
if [ $A -gt $B ]
then
echo "A 大于 B"
elif [ $A -gt $B ]
then
echo "A 等于 B"
else
echo "A 小于 B"
fi
注意:else if(C语言) == elif
if嵌套
if [ $A -gt $B ]
then
echo "A 大于 B"
else
if [ $A -gt $B ]
then
echo "A 等于 B"
else
echo "A 小于 B"
fi
fi
注意:每一个if就对应一个fi ; if后面要加then,elif后面也要加then
case…esac
case $字符串变量名 in
模式1)
命令表1
;;
模式2)
命令表2
;;
……
模式n)
命令表n
;;
esac
case $SUM in
"10")
echo "score is A"
;;
*)
echo "sorry!you lost"
;;
esac
注意:
1、模式如果是字符串或者字符,用"“括起来
2、”;;"相当于C语言switch语句中的break
3、“*”代表除各种模式以外的其他情况,相当于C语言switch中的default
4、如果模式是文件名或者文件夹,直接以文件或者文件夹名作为模式名
5、case语句中的变量名要用“$”引用