标签:shell
编译器,解释器
编程语言:机器语言、汇编语言、高级语言
静态语言:编译型语言 (事先转换成可执行的格式) C ,C++ ,JAVA ,C#
强类型 变量在使用前,必须事先声明,甚至还需要初始化
动态语言: 解释型语言 (边解释边执行)asp,aps.net,php ,shell ,python ,perl
弱类型 变量用时声明,甚至不区分类型
编程模型
面向过程
面向对象
bash变量类型:
环境变量:
本地变量(局部变量):
位置变量:
特殊变量:
注:1、脚本在执行时会启动一个子shell进程
2、命令行中启动的脚本会继承当前shell环境变量
3、系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量
环境变量:作用域为当前shell进程及其子进程
export VARNAME=VALUE
本地变量:作用域为当前shell进程
VARNAME=VALUE
局部变量:作用域为当前代码段
local VARNAME=VALUE
位置变量:
$n 参数或者命令本身
$* 参数列表(整体)
$@ 参数列表
$# 参数的个数
$_ 表示命令的最后一个参数
shift n 参数从左边依n踢出(在脚本中使用shift 参数1会踢出,之前参数2变成参数1)
特殊(预定义)变量:
$? 上一条命令执行状态的返回值(0-255,0:正确执行,1、2、127-未找到该命令 系统预留)
$$ 所在命令的PID
$! 代表最后执行的后台命令的PID
撤销变量
unset VARNAME
查看当前shell中变量
set
查看当前shell中的环境变量
env
export
printenv
变量引用方式:
${VARNAME} 括号可以省略
变量类型:(事先确定数据的存储格式和长度)
字符型
数值型
整型
浮点型
布尔型
变量赋值:
VAR_NAME=VALUE
逻辑运算:
与运算 &&
或运算 ||
非运算 !
异或运算
条件测试类型:
1、整数测试 [ num1 OPERATOR num2 ]
-eq 测试两个整数是否相等
-ne 测试两个整数是否不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
2、字符测试 [ char1 OPERATOR char2 ]
= 两个字符串是否相同
!= 两个字符串是否不相同
-z string 测试指定字符串是否为空,空则真,不空则假
-n string 测试指定字符串是否不为空
3、文件测试 [ OPERATOR file | dir ]
文件状态
-e 目标是否存在
-d 是否为目录
-f 是否为文件
文件权限
-r 是否有读权限
-w 是否有写权限
-x 是否有执行权限
4、逻辑测试 [ 表达式1 ] OPERATOR [ 表达式2 ]
-a 或 && 逻辑与 第一个条件为假时,第二个条件不用再判断,最终结果为假
-o 或 || 逻辑与 第一个条件为真时,第二个条件不用再判断,最终结果为真
! 逻辑非
定义脚本退出状态码
exit 退出脚本
exit n 设定退出状态码
如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的状态码即为脚本的状态码
bash中可以判断语法错误的语句(不完全可靠)
bash -n 脚本名 语法错误测试
bash -x 脚本名 (逐步执行语句) set +|- 可以开启关闭功能 -o 可以查看
条件测试的表达式:
[ expression ] 命令测试
[[ expression ]] 关键字测试
test expression
shell中如何进行算术运算
a=3
b=6
1、let 算术运算表达式
let c=$a+$b
2、$[算术运算表达式]
c=$[$a+$b]
3、$((算术运算表达式))
c=$(($a+$b))
4、expr 算术运算表达式 (表达式中各操作数及运算符之间要有空格,而且要使用命令引用)
c=`expr $a + $b`
面向过程
控制结构
顺序结构
选择结构
循环结构
A、选择结构
if:单分支,双分支,多分支
case语句:多分支
一、if判断语句
1、单分支if语句
if 判断条件;then
statement1
statement2
.....
fi
2、双分支if语句
if 判断条件;then
statement1
statement2
.....
else
statement3
statement4
.....
fi
3、多分支if语句
if 判断条件1;then
statement1
.....
elif 判断条件2
statement2
......
elif 判断条件3
statement3
......
elif 判断条件4
statement4
......
else
statementN
......
fi
二、case语句:
case SWITCH in
value1)
statement
...
;;
value2)
statement
...
;;
...
*)
statement
...
;;
esac
B、循环结构 (循环:进入条件,退出条件)
for:
while:适用于循环次数未知的场景,要有条件满足退出循环
until
一、for循环
1、for 变量 in 列表;
do
循环体
done
2、for ((expr1;expr2;expr3));do
循环体
done
如何生成列表
{1..100}
`seq 起始数 步进长度 结束数`
二、while循环
进入循环:条件满足
退出循环:条件不满足
while CONDITION;do
statement
...
done
三、until循环
进入循环:条件不满足
退出循环:条件满足
until CONDITION;do
statement
...
done
标签:shell
原文地址:http://hqwangping.blog.51cto.com/1359421/1786191