Shell Scripts 特殊字符 基础知识

shell 编程
编译器
编程语言:机器语言,汇编语言,高级语言
静态语言:编译型语言
    强类型(变量):事前确定变量类型
    关键字:
    事先转换成可执行格式
    c,c++,java,c#
动态语言:解释性语言 ,on the fly
    弱类型
    边解释边执行
    asp ,php,shell,python,perl :所有脚本都需要解释器
面向对象:java,python ,c++
    分解为各个对象
面向过程:shell,c
    着眼于问题解决的过程
变量:内存空间;命名
内存:编址的存储单元
进程:再内存中
变量类型:事先确定数据的存储格式和长度
    字符
    数值    
        整型
        浮点数:11.23
    布尔型:TRUE,FAUS,
    字符串
逻辑运算:与,或,非,异或
shell:弱类型编程语言
强:变量再使用前,必须事前声明,甚至还需初始化
若:变量用时声明,甚至不区分类型                                                                             

bash:

    环境变量

    局部变量
    位置变量
    特殊变量
    
本地变量:
       varname=value;作用域整个bash进程
局部变量:
       local varname=value;作用域当前代码段

环境变量:作用域为当前shell进程及其子进程;
export varname=value  : 定义环境变量
    "导出"    
位置变量:
    $1,$2 ....

特殊变量:
$?:保存上一个命令的执行状态的返回值

程序执行:可能有两类返回的值
    程序执行结果
    程序状态返回代码(0~255)
        0:正确执行
        1~255:错误执行,1,2,127,系统预留

撤销命令:
    unset varname

查看当前shell中的环境变量

printenv   

env

export

变量中追加值:varname=$varname:addvarname
脚本:命令的堆砌,按实际需要,
shebang:魔数 ;

#!/bin/bash 第一行必须这么写


bash 中如何实现判断
条件测试类型:
    整数测试
    字符测试
    文件测试
    
条件测试的表达式:
    [expression]
    [[expression]]
    test expression

整数比较:
    -eq:测试两个整数是否相等:$A -eq $B
    -ne:测试两个整数是否不等:
    -gt:测试一个数是否大于另一个数
    -lt:测试一个数是否小雨另一个数
    -ge:大于或等于
    -le:小于或等于

命令的间逻辑关系:
    逻辑与:&&
        第一个条件为假时,第二个条件不用再判断
        第一个条件为真的时候,第二个调价必须判断
    逻辑或:||

条件判断;控制结构
if 判断条件;then
        statement1
        ....

fi


双分支的if判断语句
if 判断条件;then
    statement1
    ......
fi

对于shell默认所有变量的值都是字符串

dev/null :软件设备,bit bucket数据黑洞

    
脚本在执行时会启动一个字shell进程
    命令行中的启动的子进程会继承当前shell环境变量
    系统自动执行的脚本(非命令启动)就需要自我定义需要的环境变量
    bash:
引用变量:${varialbename} ,括号有事可以省略

单引号:强引用:不做变量的替换
双引号:弱引用,做变量的替换

shell中如何进行算术运算:
A=6
B=3
1.let 算术运算表达式
    let C=$A+$B
2.$[算术运算表达式]
    c =$[$A+$B]
3.$ ((算术运算表达式))
    C=$(($A+$B))
4.expr算术运算表达式,表达式中个操作数几运算符之间要有空格,而且要使用命令引用
    C=`expr $A + $B`   
Bash编程
一.Bash特殊字符
1.通配符:
    * :匹配任何字符串
    ?:匹配任何单一字符
    集合运算符:用一些单个字,一个连续范围或断续的字符集合作为通配符
    [set]:用字符集合做通配符匹配但个字符
        [a-o],[a-h,w-z]

2.花括号展开式(可以嵌套):
    格式:[前导字符串]{字符串1[{嵌套字符串1...}][嵌套字符串2]}[后继字符串]
        例如:c{a{r,t,b},b{a,c}}s  ls s{e[c-f],p}*
3.其他特殊字符:
    < :输入重定向
    > :输出重定向(没有文件就创建,有文件就)
    >> :输出重定向(没有就创建,有则追加)
    '' :强引用字符串,不解释特殊字符串
    "" :若引用字符串,解释所有特殊字符串
    ` :命令替换(位于tab键上方)
    ; :命令分隔符
    & :在后台执行命令
4.位置变量:
    位置变量对于应与命令行参数,其中$0为脚本名称,$1为第一个参数,依次类推,参数超过九个必须使用
    ${}引用变量。shell保留这些变量,不允许用户以另外的方式定义它们,传给脚本或函数的位置变量是局部和
    只读的,而其余变量是全局的。
5.其他变量:
    $? :保存前一个命令的返回码
    $- :在shell启动或使用set命令时提供选项
    $$ :当前shell的进程号
    $! :上一个进程的进程号
    $# :传给脚本或函数的参数格式,及位置变量数减一
    ^$ :空白行
    \< :其后面的任意字符必须作为单词首部出现 或者 \b
    \> :其后面的任意字符必须作为单词的尾部出现
基本正则表达式:
    \ :转义字符
    : :空命令,等价于"NOP"(no opertate),也可以被认为与shell的内建命令(true)作用相同。
   () :命令组
   \<,>\正则表达式中的单词边界
   如:grep '\<the>\' textfile
   - :之前工作的目录."cd - "将回到之前工作的目录
 
  变量赋值和替换
    a=375 hello=$a
        注意:在赋值的前后一定不要有空格,如果"VARIABLE =value",如果有空格脚本尝试运行一个
        "VARIABLE"的命令,带着一个"=value"的参数
        如果"VARIABLE= value",脚本将尝试运行一个"value"的命令,带着一个被赋值成环境变量    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值