shell简介:
Shell的作用是解释执行用户的命令户,有两种执行方式:
交互式:用户输入一条命令,Shell就解释执行一条
批处理(Batch):用户事先写多个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。
Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执性这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。
shell的特性:
1,shell是一门弱类型语言
2,shell是一种解释性的语言
3,shell中没有类型,所有的变量都可以直接使用,不用直接使用
为什么shell脚本是一个文本文件不需要编译就可以运行
1,bash可以直接执行,执行的不是shell脚本,先加载bash,将脚本作为命令行参数
2,shell脚本不可以直接执行,是解释器帮忙执行的
3,先创建子进程,让子进程去exec
4,依赖其解释器,并不是shell自己运行的
5,一旦执行就会影响其他的,这叫做内建命令,是shell解释器的一个命令
shell执行脚本
vim script.sh输入以下的脚本语言:
使用第一种执行方式:chmod +x script.sh
使用第二种方式执行:/bin/bash script.sh
shell变量:
在script.sh输入以下脚本
执行结果:
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
$( )和``
``:由反引号括起来的也是一条命令,Shell先执行该命令,然后将输出结果立刻代换到当前命令行中。
$():算术代换:$(())用于算术计算,$(())中的Shell变量取值将转换成整数,
$( )和``区别:
(1)``很容易与''搞混乱,尤其对初学者来说。
(2)在多层次的复合替换中,``必须要额外的跳脱处理(反斜线),而$( )比较直观。
(3)最后,$( )的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的。