SHELL脚本之BASH基础

    以前我也培训过RHCE,并且已经获得过证书。但是过了差不多一年,学的很多Linux知识点都忘记了或者是不清楚了,现在决定将自己归零。从基础开始学习,跟着马哥的视频,一步一步扎实自己,提升自己。本节主要将了解一下BASH基础方面的只是。

    首先来看一下BASH中的变量类型:


BASH变量类型

    BASH变量的类型可以分为四种:环境变量、本地变量(局部变量)、位置变量和特殊变量。

    其中本地变量(VARNAME=VALUE)的作用域是整个的BASH进程。

    局部变量(local VARNAME=VALUE)的作用域为当前的代码段。

    环境变量的作用域为当前shell进程以及其子进程(定义方式要用关键词“export”:export VARNAME=value)。这里要注意一下脚本在执行时会启动一个子shell进程:1.命令行启动的脚本会继承当前shell的环境变量;2.系统自动执行的脚本(即非命令行启动)就需要自我定义需要各环境变量。

    位置变量:$1,$2...等等

    特殊变量:就是系统用来表示特定用法的,例如$?(上一个命令的执行状态返回值)等。


程序执行结果

    程序执行,可能有两类返回值(程序状态返回码):

    0:正常执行(执行成功)

    1-255:错误执行,其中1,2,127是系统预留的错误代码。


输出重定向

    >:将结果输出到一个文件中(如果有内容,则覆盖);

    >>:将结果追加到一个文件中(保留原来的文件内容,不覆盖);

    2>:将错误的信息输出到文件;

    2>>:将执行输出的错误信息追加到文件

    &>:将执行命令所有的输出信息输出到文件(包括正常输出的结果和错误的信息都输出到文件)。


撤销变量

    撤销变量很简单,就是unset VARNAME就搞定(其实定义变量的时候已经隐藏了set命令,所以撤销的话用unset就不难理解了)。


查看当前shell中变量

    用set就能轻松完成,不过这里面包括环境变量和本地变量。


查看当前shell中的环境变量

    printenv 

    env 

    export

    三条命令都用来查看当前shell里面的环境变量。


引用变量

    要用“$”来引用变量,${VARNAME}


BASH中的条件判断

    条件测试类型:整数测试、字符测试和文件测试三种。

    条件测试的表达式:[ expression ] 或者 [[ expression ]] 或者 test expression三种。

    整数测试中的比较:

    -eq:测试两个整数是否相等,相等为真:比如$A -eq $B。

    -ne:测试不相等。

    -gt:测试一个数是否大于另一个数:大于为真,否则为假。

    -lt:小于为真,反之为假。

    -ge:大于或者等于。

    -le:小于或者等于。


SHELL中的命令逻辑关系

   逻辑与: && (前面一个命令执行成功,后面才会执行)

    逻辑或: ||  (前面一个命令执行失败,后面才会执行)

    逻辑非: !  (命令结果的去反)


(这里列出实例一个:判断用户user1是否存在,如果在就显示信息,否则,添加用户):

id user1 && echo "user1 exists."" || useradd user1.


变量名称

    1.只能包含字母、数字和下划线,并且不能数字开头;

    2.不应该跟系统中已有的环境变量重名;

    3.最好做到见名知义。


条件判断,控制结构 

单分支的if语句

    if 判断条件; then  (then如果和if在同一行,if条件后面必须要分号)

        statement1

        statement2

        ...

    fi

双分支的if语句

    if 判断条件; then

        statement1

        statement2

        ...

    else

        statement3

        statement4

        ...

    fi


在最后附上一个实例,包含上面所讲的内容:

    写一个脚本:给定一个用户,判断其UID与GID是否一样

    如果一样,就显示此用户为“good guy”,否则,就显示此用户为“bad guy”

#!/bin/bash

USERNAME=user1

USERID=`id -u $USERNAME`

GROUPID=`id -g $USERNAME`

if [ $USERID -eq $GROUPID ]; then

    echo "good guy"

else

    echo "bad guy"

fi


“一个人不能对自己太好,如果你对自己太好了,永远不会知道自己的能力有多大”

“尤其是男人,要对自己狠点,天天学习一两分钟就说累了,那是不行的”

“一个人不能有自怜的情绪,天天感叹自己的出身和能力,怨天尤人,这是要绝对不允许的”


你可能感兴趣的:(linux,local,知识点,Export,关键词)