1介绍
本节介绍了shell脚本的运算符,命令和文件。
2运算符
2.1算数运算符
原生bash不支持算数运算,所以需要借助其他的一些工具,此处用到了expr。
#!/bin/bash
a=20
b=10
value=`expr $a + $b`
echo $value
结果为30。需要注意的是,表达式外侧的反引号(tab键上方),以及在’+’两侧的变量必须与其有空格,如果写成
value=`expr $a+$b`
此例输出的结果为20+10,而不是30。
同理+,-,*,/,%都是一样的写法,另外,乘号(*)前边必须加反斜杠(\)才能实现乘法运算
,而==,!=则是下面这样:
#!/bin/bash
a=20
b=10
if [ $a != $b ]
then
echo "False"
fi
一定要十分注意’[]’与变量之间的空格和’!=’与变量之间的空格,如果省略了空格就会报错。赋值语句’=’与其他语言一样正常使用即可。
2.2关系运算符
此处没使用‘<’这种符号,而是使用上面这种字符,同样也要注意空格的问题。
#!/bin/bash
a=20
b=10
if [ $a -gt $b ]
then
echo "a大于b"
else
echo "a小于b"
fi
2.3布尔运算符
#!/bin/bash
a=20
b=10
if [ $a -gt $b -a $a -lt 30 ]
then
echo "True"
else
echo "False"
fi
[ $a -gt $b -a $a -lt 30 ]表示为a大于b,且小于30,结果为true
2.4逻辑运算符
&& 和||这两个没有什么可说的,2.3的例子,也可以写成if [[ $a -gt $b && $a -lt 30 ]],注意是两个[]。
2.5字符串运算符
关于-z,-n等用法
#!/bin/bash
c=Tom
if [ -z $c ]
then
echo "c长度为0"
else
echo "c长度不为0"
fi
2.6文件测试运算符
下图的整理来自菜鸟教程网
File是指所判断的文件路径,结果为”文件可读”:
#!/bin/bash
file="/home/ac/桌面/Shell脚本测试文件/04.sh"
if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi
3命令
Echo命令:
也就是输出字符串,在双引号内可以使用转义运算符,变量等等,另外要让其执行某个命令,则使用echo加上反引号,反引号里为所要执行的命令。
#!/bin/bash
read First_Name
echo "输出:${First_Name}"
Printf命令:模仿的是C语言里的Printf,其用法也基本与其保持一致,至于与echo的区别在于,printf能进行有效的显示格式控制。
Test命令:我们可以用test取代if语句后的括号’[ ]’。
#!/bin/bash
num1=200
num2=100
if test $num1 -gt $num2
then
echo "num1 大于 num2"
else
echo "num1 小于 num2"
fi
4语法
4.1if语句
(1)If else
if []
then
..语句..
else
..语句..
fi
(2)If elseif
if []
then
..语句..
elif []
then
..语句..
else
..语句..
fi
4.2for循环
结构:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
Done
例子:
#!/bin/bash
for a in 1 2 3 4 5
do
echo $a
Done
4.3while语句
结构:
while condition
do
command
Done
例子(注意空格):
#!/bin/bash
a=1
b=5
while([ $a -lt $b ])
do
echo $a
a=`expr $a + 1`
done
4.4until循环
同where循环一样,只不过是当条件为真时停止。
4.5Case
结构:
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
例子:
#!/bin/bash
echo '你输入的数字为:'
read Num
case $Num in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '其他'
;;
esac
4.6函数
函数的使用比较简单,当然也可以往里面传递参数。参数的传递与之前的文件参数传递是一样的。
例子:
#!/bin/bash
read name
read word
FirstWord(){
echo "$1 say: $2 "
}
FirstWord $name $word
5文件
可以在一个shell脚本里执行另一个shell脚本。引用规则为:. 文件路径
如下: . ./test1.sh
例子:
#test1.sh文件
#!/bin/bash
name="Tom"
word="Hello world!"
#test2.sh文件
#!/bin/bash
. ./test1.sh
echo "$name say: $word"