以前我也培训过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
“一个人不能对自己太好,如果你对自己太好了,永远不会知道自己的能力有多大”
“尤其是男人,要对自己狠点,天天学习一两分钟就说累了,那是不行的”
“一个人不能有自怜的情绪,天天感叹自己的出身和能力,怨天尤人,这是要绝对不允许的”