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 不等于

相关推荐