参考博客: http://see.xidian.edu.cn/cpp/view/6994.html
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支.
Shell有两种执行命令的方式:
- 交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
- 批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。
Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器。
我们常用的linux中shell脚本解释器是bash
bash---linux
sh---unix
csh---linux中的tcsh
编译型语言: Fortran Ada Pascal C C++ Java
解释型语言: awk、Perl、Python、Ruby与Shell,执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再由计算机运行
开始写shell脚本语言
定义变量: e.G 直接写变量名和value,中间不需要空格
my_name="DongHaifeng" 注意: 变量名开始必须为字母,中间可以有下划线
只读变量:readonly my_name
输出变量时需要用$: echo $my_name
删除变量: unset my_name
运行shell脚本时有三种变量: 局部变量, 环境变量 , shell脚本变量
#用来注释语句
计算函数: expr
- #!/bin/bash
- val=`expr2 + 2`
- echo "Total value : $val"
shell字符串
$*输出所有的字符
$@ 输出所有的字符 ,单个输出
$#求字符串的长度
数组 array_num=(1 2 3 4)
value1=${array_num[2]} 取出单个元素
if else fi
case $num in
1)
;;
for a in 1 2 3 4
do
done
while[$count -lt 5]
sum=(($a + $b))
until[$count -eq 4]
......
break continue都可以在shell中书写
shell函数:
func1(){
sum=0
for a in 1 2 3 4
do
for b in 1 2 3 4
do
sum=`expr $sum + $a + $b`
done
done
return $sum
}
func1
ret=$?
echo "func1 is: $ret"
重定向:
abcdef > test.sh输出重定向
abcdef<test.sh输入重定向
shell文件包含: 一个shell中嵌套另一个shell执行文件
例如:
subscript.sh 嵌套在main.sh中
subscript.sh: url="http:---------------"
#!bin/bash
. ./subscript.sh
echo $url