2.环境变量
$HOME/.bash_profile 用户的(/etc/profile多有用户的)
export 变量名=值
env 查看环境变量 或者直接输入 export
readonly同本地变量
3.变量替换
echo ${变量名} 或者echo $变量名 输出变量值
${变量名:?value}如果未设置变量,显示用户定义错误信息value (用于查询是否定义了变量)
${变量名:+value}如果设置了,显示value,否则为空
${变量名:-value}如果未设置,显示value
${变量名:=value}如果未设置,设置其值,并显示
4.变量清楚
unset 变量名
5.位置变量
$0-$9共10个
6。标准变量
即系统环境变量
/etc/profile中定义
EXINIT
HOME
IFS (分隔类型 :)
LOGNAME
MAILCHECK
MAILPATH
TERM (终端类型)
PATH (可执行文件寻找到路径)
PS1 ='[\u@\h \W]\$ '(目录提示符~)
PS2 ='> ' (一行上运行多个命令时用到)
PWD
SHELL
MANPATH man 的目录
TERMINFO
例子 :set | grep “MAIL”
7.特殊变量
$#(传递到脚本的参数个数)
$*(以一个点位字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数不可超过9个))
$$(脚本运行的当前进程ID号)
$!(后台运行的最后一个进程的进程ID号)
$@(传递到脚本的参数里表,但是使用时加引号,并在引号中返回每个参数)
$-(显示shell使用的当前选项,与set命令功能相同)
$?(显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
8影响变量的命令
declare
设置或显示变量
-f只显示函数名
-r创建只读变量(declare和typeset)
-x创建转出变量
-i创建整数变量
使用+代替-,可以颠倒选项含义
export
用于创建传给shell的变量
--表示选项结束,所有后续参数都是实参
-f表明在“名-值对中东名字是函数名
-n把全局变量转换成局部变量。换句话说,命令的变量不再传给shell
-p显示全局变量列表
readonly
用于显示或设置只读变量
--表示选项结束
-f创建只读变量
set
设置或重设各种shell
shift [n]
用于移动位置变量,调整位置变量,使$3的值赋给$2,$2的值赋给$1
typeset
用于显示或设置变量
是declare的同义词
unset
用于取消变量定义
--表示选项结束
-f表示删除只读变量,但不能取消从shell环境中删除指定的变量和函数
如PATH,PS1PPID,UID,EUID等的设置
二
2。双引号
可饮用除了字符$,`,\外的任何字符或字符串
3.单引号
与双引号类似,不同的是shell会忽略任何引用值,换句话说,如果屏蔽了其特殊含义,会将引号里的所有字符,包括引号都作为一个字符串
4.反引号
用于设置系统命令的输出到变量。shell将反引号中的内容作为一个系统命令,并执行其内容
5.反斜杠
如果一个字符有特殊含义,反斜杠防止shell误解其含义,即屏蔽其特殊含义
下述字符包含特殊含义 $ * + ^ & ' " | ?
三 运算符
~op1 反运算符,0变1,1变0
op1< op1>>op2 同上,除以2 op1&op2 位与操作 op1^op2 位异或 op1|op2 位或操作 echo $[ 表达式 ] echo $[ 2^4 ] || && 赋值运算符 =,+=,-=,×=,/=,&=,^=,>>=............. let $count = $count + $change let $count += $change 2表达式替换 $[]和$(()) 习惯使用前者,所有shell的求值都是用整数完成 前者可以接受不同基数的数字 [base#n] n表示基数从2到36的热和基数 echo $[ 10#8 +1 ] 结果=9,这里的8表示8进制