您的位置:首页 > 运维架构 > Shell

【Shell脚本(二)】运算符,命令和文件

2018-04-11 14:30 399 查看

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/bashnum1=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"

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐