您的位置:首页 > 运维架构 > Shell

Linux Shell学习笔记(二)

2012-05-24 15:18 120 查看
    2.变量

    2.1.1变量的设定规则

    (1). 变量与发量内容以一个等号『=』相连结,ex: name=brian

    (2). 等号两边不能直接接空格符

    (3). 变量名称只能是字母,数字,下划线。但是数字不能作为变量名的开头

    (4). 变量内容若有空格符,则用双引号或者单引号将变量内容括起来

        a.双引号内的特殊字符,可以保持原有的特性。ex: newname="new name is $myname"------>echo $newname的结果为:new name is brian

        b.单引号内的特殊字符,仅为一般文字。ex: newname='new name is $myname'------>echo $newname的结果为:new name is $myname

    (5). 可以使用跳脱字符"\"将特殊符号(如Enter,$,\,',空格符等)变成一般字符

    (6). 优先处理符号"`"或者$(指令),注意是反单引号,可以优先处理一个指令。ex: version=$(uname -r)或者version=`uname -r`,再echo $version

    (7). 若变量扩展内容,则可以使用“$变量名称”或者${变量名称}累加内容.ex: PATH="$PATH":/usr/local/jdk或者PATH=${PATH}:/usr/local/jdk

    (8). 若变量需要在子程序中使用,则可以通过export将变量变为环境变量。ex: export PATH

    (9). 取消变量设定,使用unset 变量名称

    2.1.2变量$(关于本shell的PID)

    这个是代表的目前这个shell的线程ID,亦即是Process ID(PID). 查看本shell的PID,echo $$

    2.1.3变量?(关于上个执行指令的回传值)

    如果上个指令执行成功执行,则会回传一个0值,如果执行错误,则会回传错误代码,一般以非0数值来取代

    2.1.4export(自定义变量转换成环境变量)

    export 变量名

    如果仅仅使用export,而没有接变量名,则终端会把所有的环境变量秀出来

    2.2.1变量键盘读取与宣告

    read,最常被用到shell script当中,其相关语法

    read [-pt] 变量名

    -p:后面接提示字符

    -t:后面可以接等待的秒数,不会一直等待使用者

    declare/typeset,declare 和 typeset 是一样的功能,就是在宣告变量的类型。如果使用 declare, 后面没有接任何参数,那么 bash 就会主动的将所有变量名称统统叫出来,就好像使用 set 一样

    语法:declare [-aixr] variable 选项与参数:

    -a :将后面名为 variable 的变量定义成为数组 (array) 类型

    -i :将后面名为 variable 的变量定义成为整数数字 (integer) 类型

    -x :用法与export 一样,就是将后面的 variable 变成环境发量;

    -r :将变量设定成为 readonly 类型,该发量不可被更改内容,也不能 unset

    2.3.1变量内容的删除,取代与替换

    ${变量#关键词}                                           若变量内容从头开始的数据符合『关键词』,则将符合的最短数据删除

    ${变量##关键词}                                         若变量内容从头开始的数据符合『关键词』,则将符合的最长数据删除

    ${变量%关键词}                                          若变量内容从尾向前的数据符合『关键词』,则将符合的最短数据删除

    ${变量%%关键词}                                      若变量内容从尾向前的数据符合『关键词』,则将符合的最长数据删除

    ${变量/旧字符串/新字符串}                       若变量内容符合『旧字符串』则『第一个旧字符串会被新字符串取代』

    ${变量//旧字符串/新字符串}                      若变量内容符合『旧字符串』则『全部的旧字符串会被新字符串取代』

    2.3.2变量的测试与内容替换

    new_var=${old_var-content}                   若被测试的变量并未设定,则content将赋给变量名

    new_var=${old_var:-content}                  若被测试的变量并未设定或者已经赋予空字符串时,都能够用后面的内容来替换与设定

    2.4.1命令别名设定:alias和unalias

    ex: alias rm='rm -i' (设定命令别名)

    ex: unalias rm(取消命令别名)

    2.5.1shell配置文件

    一般来说,login shell只会读取两个配置文件:

    (1). /etc/profile:这是系统整体的设定,最好不要修改这个档案

    (2). ~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人设定,如果要改自己的数据,就写入这里!

    bash 的 login shell 情况下所读取的整体环境配置文件其实只有 /etc/profile,但是 /etc/profile 还会呼叫出其他的配置文件。bash 的 login shell 设定只会读取(2)中三个档案的其中一个,而读取的顺序为~/.bash_profile,~/bash_login,~/.profile。如果~/.bash_profile存在,后面两个存不存在,都不会被读取。

    (3). ~/.bashrc (non-login shell 会读)

    2.5.2 source或者"."读入环境配置文件的指令

    如果更改了bash shell的配置文件,而又不想重新登录就可以使配置生效,那么利用 source 或小数点 (.) 都可以将配置文件得内容读进目前的shell 环境中!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息