Shell脚本编程的一些基础
bash 脚本名 可以运行脚本
bash的常用选线
#bash
-n 语法测试
-x 显示过程
编程语言:
动态语言(脚本语言)
变量不需要事先证明
解释执行
编辑--->执行
高级脚本语言 perl 太自由 Python (完全面向对象) 只提供一种最优的 方法 ruby
asp jsp php (不用使用到root权限) 面向网页的脚本语言
静态语言(编译行语言)
变量必须声明,严格区分变量类型
编译后才能执行
编辑--->编译--->连接--->执行
变量是命名的内存空间 命名 为了以后程序的调用方便
变量:
变量类型:限定 占内存空间大小、数据存储格式
3
字符 8bit
数值 2bit
bash 不严格区分变量类型 区分数值型和字符型 不支持浮点行
2/3=0 只区整数部分--->圆整
命令行下声明的变量 只对当前登录的shell 及子shell 有效
变量
a3
declare
-i integer
-x 环境变量
declare -i A=0 初始化 声明一个变量 并赋值
set A=3 set 声明的都是本地变量 有空格要用引号引起来
变量类别(class):
本地变量: 只对当前shell有效 整个脚本都有效 不能到其他脚本
环境变量(全剧变量):对当前shell和子shell 有效
export declare -x 声明环境变量
导出环境变量的方法:
1、先先声明变量,然后export导出
2、直接export导出
特殊变量:
$0 特殊变量 用于引用脚本本身的名字
$* $@ 特殊变量 引用一个脚本的所有参数
$* 把每个变量都当一个字符串
$@ 把所有变量当成一个字符串
$# 传递个命令行参数的个数
位置变量:
$1-9 {0-无线}
shift $1 轮换显示变量
local 定义变量 只对当前代码段有效
变量用完之后怎么处理:脚本结束后自动收回也可以
unset 撤销变量 收回
如何引用变量:
${变量名} 变量替换/引用
$变量名 ANIMAL=pig There are some ${ANIMAL}s.
引号;引用
"":弱引用
'':强引用 强引用中的值不做变量替换 直接引用过来
``:命令引用
变量名的使用规定:
只能包含字母数字和下划线,但是不能以数字开头
#echo 变量 显示变量的值
用户工作环境配置文件:
全局配置:/etc/prefile, /etc/profile.d/*, /etc/bashre
个人配置:~/.bash_profile, .bashrc
~/.bash_history 命令历史
~/.bash_logout 登出配置
profile类 :交互式登录用户生效
1、设置环境变量
2、运行一些命令或脚本
bashrc类:交互式和非交互式登录用户生效(不用用户登录就系要执行一些)
1、设置本地变量
2、定义命令别名
交互式登录用户执行用户配置文件的过程
/etc/profile--->/etc/profile.d/*--->~/.bash_profile--->~/.bashrc--->/etc/bashrc
非交互式登录:
~/.bashrc--->/etc/bashrc--->/etc/profile.d/*
显示变量
#set 显示所有变量
#export 只用于显示声明过的环境变量
#printenv 显示环境变量
几个关键的环境变量
DISPLAY:定义显示信息显示到那个显示器上去
LANG:声明当前的语言环境.字符编码
PATH: 声明 命令行在那个位置找命令对应的文件
输入输出重定向 和管道
标准输入,标准输出,标准错误输出
标准输入:STDIN 用0表示 默认是键盘
标准输出:STDOUT 用1表示 默认是监视器
标准错误输出:STDERR 用2表示 默认是监视器
输出重定向:
>:定义标准输出重定向 会把文件原有内容覆盖掉 覆盖输出重定向
>>: 追加输出重定向
2>:错误覆盖输出重定向
2>>:错误追加输出重定向
&>混个输出覆盖重定向
&>>混合输出
&> /dev/null 丢弃输出
set -C 不允许使用覆盖输出
set +C 允许使用覆盖输出
管道:把一个命令的输出当作另一个命令的输入
|
COMMAND1 | COMMAND2 | COMMAND3 | ...
管道一次把所有的内容传给后面的 命令
#tee 既显示又保存 两项输出
输入重定向;
< 输入重定向 符号
<< here document 用于脚本当中生成一个问件时使用
脚本条件判断:
判断:bash
test expression
[ expression ] 必须有空格 可以做单独的语句
[[ expression ]] 可以使用类似正则表达式的方式
[ ! expression ] 非
数值比较 整数比较测试
-gt 大于 great than
-ge 大于等于 great
-lt 小于
-le 小于等于
-eq 等于
-ne 不等于