1.变量
变量显示:echo $var
变量赋值: myvar=test123
变量设置原则:
- 变量与赋值之间,以“=”号连接, myvar=123
- 等号两边不能有空格,如“myva = 123”或者“myvar=hello welcome”都是错的
- 变量开头不能位数字
- 变量内容有空格可以使用双引号“”或者单引号''将变量内容集合起来。但是,如果双引号中有特殊字符如“$”,可以保持原有特性,
例如:
myvar="lang is $LANG, 执行
echo $myvar ,显示 lang is en_US.UTF-8
- 单引号内的字符,仅为一般字符
例如:myvar='lang is $LANG' ,
执行
echo $myvar, 显示 lang is $LANG
转义字符“\”,可以将特殊字符转化为一般字符
在一串命令中,还需要通过其他命令提供的信息,可以使用“$(命令)”
例如: “version=$(uname -r)”,再echo $version,显示3.11.0-15-generic
当变量中增加内容时,可以使用“$变量名称”或者“${变量}累加内容”
例如: PATH="$PATH":/home/bin
如果变量需要在其他子进程中执行,可以使用export来讲变量变成环境变量, export var
通常大写字符为系统变量,自定义变量使用小写字符
变量取消,使用unset,例如unset myvar
反单引号(`)中的命令会先执行,然后将结果作为外部的输入信息。
例如: ls -lrt `locate crontab`
子进程不能继承父进程的自定义变量,如需使用要用export转换成环境变量
2.环境变量
env
|
列出所有环境变量
|
HOME
|
用户主文件夹 |
SHELL
|
当前shell程序
|
PATH
|
执行文件查找路径,目录之间以冒号(:)分隔
|
set
|
查看所有变量,包括环境变量和自定义变量 |
PS1
|
提示符设置
|
3.其他特殊命令
read,读取从键盘传入的字符。可选参数, -p显示输入提示符,-t等待输入时间。
declare/typeset, 声明变量类型
命令 | 作用 | 用法 |
常用参数
|
read
|
读取从键盘传入的字符
|
read [-pt] var
|
-p显示输入提示符
-t等待输入时间
|
declare
|
声明变量类型
|
declare [-aixr] var
|
a数组,i整数,x装换成环境变量,r将变量设为readonly |
var[index]=value
|
数组
|
var[0]=test1
|
$var[0]数组第一个元素,$var整个数组
|
ulimit
|
用户资源限制,配额
|
ulimit [-SHacdfltu] [配合]
|
|
history
|
历史命令
|
|
|
alias
|
别名
|
|
|
4.变量的删除,修改,替代和替换
删除:
$(PATH#/*kerberos/bin:) #代表从变量内容最前面开始删除,且删除最短的一个,通配符*代表任意个数字符
变量设置方式
|
说明
|
|
$(变量#关键字) |
变量内容从头开始,删除匹配的最短数据
|
|
$(变量##关键字)
|
变量内容从头开始,删除匹配的最长数据
|
|
$(变量%关键字)
|
从变量值得尾部向前,删除匹配的最短数据 |
|
$(变量%%关键字)
|
从变量值得尾部向前,删除匹配的最长数据
|
|
$(变量/旧字符串/新字符串) |
变量内容符合“旧字符串”,则第一个旧字符串会被新字符串替换
|
|
$(变量//旧字符串/新字符串)
|
变量内容符合“旧字符串”,则全部旧字符串会被新字符串替换
|
|
5.变量的测试与替换
在某些时候,我们需要判断变量是否存在,如果存在就是用即有的设置,如不存在则给予一个常用的设置。
减号“-”
冒号“:“
问号“?”
变量设置方式
|
str没设置
|
str为空字符串
|
str为非空字符串
|
var=${str-expr}
|
var=expr
|
var=
|
var=$str
|
var={str:-expr}
|
var=expr
|
var=expr
|
var=$str
|
var=${str+expr}
|
var=
|
var=expr
|
var=expr
|
var=${str:+expr}
|
var=
|
var=
|
var=expr
|
var=${str=expr}
|
str=expr var=expr |
str不变
var=
|
str不变
var=$str
|
var=${str:=expr}
|
str=expr
var=expr
|
str=expr
var=expr
|
str不变
var=$str
|
var={str?expr}
|
expr输出至stderr
|
var=
|
var=str
|
var={str:?expr}
|
expr输出至stderr
|
expr输出至stderr
|
var=str
|