【Linux】中shell脚本之符号篇

时间:2021-04-14 15:32:21

shell简介:

Shell的作用是解释执行用户的命令户,有两种执行方式:

交互式:用户输入一条命令,Shell就解释执行一条

批处理(Batch):用户事先写多个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。 

Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执性这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。

shell的特性:

1,shell是一门弱类型语言

2shell是一种解释性的语言

3,shell中没有类型,所有的变量都可以直接使用,不用直接使用

为什么shell脚本是一个文本文件不需要编译就可以运行

1,bash可以直接执行,执行的不是shell脚本,先加载bash,将脚本作为命令行参数
2,shell脚本不可以直接执行,是解释器帮忙执行的
3,先创建子进程,让子进程去exec
4,依赖其解释器,并不是shell自己运行的
5,一旦执行就会影响其他的,这叫做内建命令,是shell解释器的一个命令

shell执行脚本

vim script.sh输入以下的脚本语言:

【Linux】中shell脚本之符号篇

使用第一种执行方式:chmod +x script.sh

【Linux】中shell脚本之符号篇

使用第二种方式执行:/bin/bash script.sh

【Linux】中shell脚本之符号篇

shell变量:

在script.sh输入以下脚本

【Linux】中shell脚本之符号篇

执行结果:

【Linux】中shell脚本之符号篇

shell的计算:

在script.sh中输入以下脚本:

#!/bin/bash
sum=0
i=100
j=30
echo i=$i j=$j
(( sum=i+j))
res=$((i+j))
echo i+j:
echo sum:$sum
echo res:$res

(( sub=i-j ))
res=$((i-j))
echo i-j:
echo sub:$sub
echo sub:$res

((mul=i*j))
res=$((i*j))
echo i*j:
echo mul:$mul
echo res:$res

((div=i/j))
res=$((i/j))
echo i/j:
echo div:$div
echo div:$res

((mod=i%j))
res=$((i%j))
echo i%j:
echo mod:$mod
echo res:$mod
执行 结果为:

【Linux】中shell脚本之符号篇

$( )和``
``:由反引号括起来的也是一条命令,Shell先执行该命令,然后将输出结果立刻代换到当前命令行中。
$():算术代换:$(())用于算术计算,$(())中的Shell变量取值将转换成整数,
$( )和``区别:
(1)``很容易与''搞混乱,尤其对初学者来说。
(2)在多层次的复合替换中,``必须要额外的跳脱处理(反斜线),而$( )比较直观。
(3)最后,$( )的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的。