shell基础知识总结

 

在shell中,变量赋值有下列句语法格式:
name=string
其中:
1,name是变量名,变量名是以字母或下划线开头的字母,数字和下划线字符序列。用户自定义变量按照惯例使用小写字符命名。
2,"="是赋值符号。两边不呢个直接跟空格,否则shell将视为命令。
3,string是被赋予的变量值。若string中包含空格,制表符和换行符,则string必须用'string'或"string"的形式,即用单(双)引号将其括起来。双引号允许变量替换,而单引号则不可以。
例如:
#v1=CentOS
#v2='CentOS 5'
#v3="CentOS 5 $HOSTTYPE"
#v4=1234
当变量的值仅仅包含数字时才允许进行数字计算。

用export内置命令敬爱给你局部变量设置为全局变量。
#v1=UNIX
#v2=Linux
#export var3=centos var4=ubuntu
#常用的环境变量
BASH bash的完整路径名
EDITOR 在应用程序中默认的编辑器
ENV Linux查找配置文件的路径
HISTFILE 用于存储历史命令的文件
HISTSIZE 历史命令列表的大小
USER 当前用户名
UID 当前用户的UID
HOME 当前用户的用户目录
OLDPWD 前一个工作目录
PATH bash寻找可执行文件的搜索路径
PWD 当前工作目录
IFS bash用于分隔命令行参数的分隔符
PS1 命令行的一级提示符
PS2 命令行的二级提示符
PPID 父进程PID
SECONDS 当前shell开始后所流逝的秒数
TERM 当前用户的终端类型
LANG 主语言环境
#
环境变量
取消环境变量的设置unset

5.2深入shell变量操作
变量替换扩展
表达式             说明
${var-DEFAULT}   若var未被声明,则以DEFAULT作为其值*
${var:-DEFAULT}  若var未被声明或者其值为空,则以DEFAULT作为其值*
${var=DEFAULT}   若var未被声明,则以DEFAULT作为其值*
${var:=DEFAULT}  若var未被声明或者其值为空,则以DEFAULT作为其值*
${var+OTHER}     若var被声明了,则其值就是OTHER,否则就为空*
${var:+OTHER}    若var被声明了或者其值不为空,则其值就是OTHER,否则就为空*
${!varprefix*}   匹配之前所有以varprefix开头进行声明的变量
${!varprefix@}   匹配之前所有以varprefix开头进行声明的变量

变量的字符串操作
表达式                            说明
${#string}                   $string的长度
${string:postion}          在$string中,从$postion开始提取字串
${string:postion:length}   在$string中,从位置$postion开始提起字串长度为$length的字串
${string#sunstring}     从变量$string的开头,删除最短匹配$substring的字串
${string##sunstring}    从变量$string的开头,删除最长匹配$substring的字串
${string%sunstring}  从变量$string的结尾,删除最短匹配$substring的字串
${string%%sunstring} 从变量$string的开头,删除最长匹配$substring的字串
${string/sunstring/replacement} 使用$replacement,来代替第一个匹配的$substring
${string/#sunstring/replacement} 如果$string的前缀匹配$substring,使用$replacement,来代替第一个匹配的$substring
${string/%sunstring/replacement}  如果$string的后缀匹配$substring,使用$replacement,来代替第一个匹配的$substring

shell变量的输入
read [参数]   [<变量名> ...]
-p (prompt):设置提示信息
-t (timeout):设置输入的等待秒数

条件测试

测试语句
格式1:test <测试表达式>
格式2:[ <测试表达式> ]
格式3:[[ <测试表达式> ]]
注意:
1在[[]]中可以使用通配符进行模式匹配
2&&,||,<,>操作符能够正常存在于[[]]中,但不能在[]中出现
3要对整数进行关系运算也可以使用shell的算法运算符(())进行测试

文件测试操作符

文件测试操作符   说明
-e file 文件是否存在
-f file 是否为普通文件
-d file 是否为目录文件
-L file 是否为符合链接文件
-b file 是否为块设备文件
-c file 是否为字符设备文件
-s file 文件长度不为0(非空文件)
-r file 是否为只读文件
-w file 是否为可写文件
-x file 是否为可执行文件
-u file 是否为设置了set-user-id标记的文件
-g file 是否为设置了set-group-id标记的文件
-k file 是否为设置了save-text-mode标记的文件
-O file 测试者是否是文件的属主
-G file 测试者是否是文件的同组人
file1 -nt file2 file1 是否比 file2新
file1 -ot file2 file1 是否比 file2旧
file1 -ef file2 file1 是否与 file2共用相同的i-node(链接)

字符串测试操作符
文件测试操作符   说明
-z string  测试字符串是否为空串
-n string  测试字符串是否为非空串
string1 = string2 测试两个字符串是否相同
string1 != string2 测试两个字符串是否不相同

整数二元比较操作符 
在[]中使用的比较符   在(())            说明
-eq    ==  相等
-ne    !=  不等
-gt    >  大于
-ge    >=  大于等于
-lt    <  小于
-le    <=  小于等于

在[]中使用的逻辑操作符      在[[]]中   说明
-a        && 与
-o        || 或
!         ! 非

注意:
1 为了避免混淆,当涉及数值的关系或逻辑运算时,应该尽量使用(())
2 在(())中引用变量的值时,加$或不加$均可
3 与在[]和[[]]中不同,在(())中不必使用左右的空格

使用特殊环境变量

参数变量

特殊参数                    含义
$0  脚本名称
$n  n的大于等于1的整数,表示第n个位置参数,当n大于9时,要用$[n]的形式
$#  位置参数的格式
"$*"所有的位置参数(作为单个字符串)
"$@"所有的位置参数(每个都作为独立的字符串)

进程状态变量
特殊变量 含义
$$ 当前进程的PID
$? 在此之前执行的命令或脚本的返回值,0表示成功,非0表示不同原因的失败
$! 运行在后台的最后一个作用的PID
$_ 在此之前执行的命令或脚本的最后一个参数

你可能感兴趣的:(shell基础知识总结)