整理的不完善  有些粗略 望各位学者谅解!

 -本地变量  -影响变量的命令
 -环境变量  -引号
 -变量替换  -运算符
 -位置变量  -表达式替换
 -标准shell变量  -运算符的优先级
 -特殊变量
 
-变量:
 -什么是shell变量?
 -本地变量
 -环境变量
 -变量替换(显示变量)
 -位置变量
 -标准变量
 -特殊变量
 -影响 变量的命令 
 
-本地变量:
 -本地变量在用户现在的shell生命期的脚本中使用
 -variable-name=value
 -set显示本地所有的变量
 -readonly variable-name
#LOCALTEST="test"
#echo ${LOCALTEST}
test
#echo $LOCALTEST
test
#set  通过set查看变量
#exit  退出后查看一下还是否存在LOCALTEST变量
#readonly LOCALTEST
#LOCALTEST="test"
#readonly 查看当前shell有那些只读变量
#readonly -p
-环境变量
 -环境变量用于所有用户进程(经常称为子进程).登录进程称为父进程.shell中执行的用户进程均称为子进程.不像本地变量(只用于现在的shell)环境变量可用于所有子进程,这包括编辑器,脚本和应用。
 -$HOME/.bash_profile(/etc/profile)
 -export
 -env
#cat /etc/profile
#export Antiy="xi'an"
#env  然后查找变量Antiy
#export  也可以查看
#readonly Antiy 设置为只读
#export Antiy="xidian" 看是否可以修改,会提示不可以,因为只读了。

-变量替换:
 -用变量的值替换它的名字。
 -echo
 -在变量名前加$,使用echo命令可以显示单个变量取值。
#testvar="this is a test"
#echo $testvar
this is a test
#echo ${testvar}
 变量替换-续
${Variable name}  显示实际值到variable name
${Variable name:+value} 如果设置了variable name,则显示其值value,否则,为空!
${Variable name:?value} 如果未设置variable name,显示用户定义错误信息value!
${Variable name:-value} 如果未设置variable name, 则显示其值value
${Variable name:=value} 如果未设置variable name,设置其值,并显示
#echo ${testvar:+"xidian"}
xidian
#echo ${testvar1:+"xidian"}
为空
#echo ${testvar1:?"no defined"}
bash:testvar1:no defined
#echo ${testvar1:-"xidian"}
#echo ${testvar:-"xidian"}
xidian
#echo ${testvar:="xidian"}
this is a test
#echo ${testvar2:="xidain"}
xidian
#echo $testvar2
xidian

-变量清除:
 
#echo $testvar
this is a test
#unset testvar
#echo $testvar

#echo $testvar2
#readonly testvar2
#unset testvar2
-位置变量:
 -位置变量表示$0,$1,$2,... ...$9
 -向脚本中使用位置参数
 -向系统命令传递参数
example01:
#!/bin/bash
#parm01
echo "这是脚本的名称:$0"
echo "这是脚本的第1个位置参数:$1"
echo "这是脚本的第1个位置参数:$2"
echo "这是脚本的第1个位置参数:$3"
echo "这是脚本的第1个位置参数:$4"
echo "这是脚本的第1个位置参数:$5"
echo "这是脚本的第1个位置参数:$6"
echo "这是脚本的第1个位置参数:$7"
echo "这是脚本的第1个位置参数:$8"
echo "这是脚本的第1个位置参数:$9"
example02:
#!/bin/bash
#parm02
find   /home/shell/ -name $1 -print

-标准变量:
 -bash默认建立了一些标准环境变量,可在/etc/profile中定义。
 -EXINIT
 -HOME
 -IFS
  echo $IFS
  IFS=':'
 -LOGNAME
 -MAIL
 -MAILCHECK
 -MAILPATH
 -TERM
 -PATH
 -TZ
 -PS1
  #set | grep "PS"
  PS1='[\u@\h \w]\$ '
  PS2='>'
 -PS2
 -PWD
 -SHELL
 -MANPATH
 -TERMINFO
-特殊变量:
 -$# :传递到脚本的参数个数
 -$* :以一个单字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可超过9个。
 -$$ :脚本运行的当前进程ID号
 -$! :后台运行的最后一个进程的进程ID号
 -$@ :与$*相同,但是使用时加引号,并在引号中返回每个参数
 -$- :显示shell使用的当前选项,与set命令功能相同
 -$? :显示最后命令的退出状态,0表示没有错误,其他任何值表明有错误
#!/bin/bash
#parm01
echo "这是脚本的名称:$0"
echo "这是脚本的第1个位置参数:$1"
echo "这是脚本的第1个位置参数:$2"
echo "这是脚本的第1个位置参数:$3"
echo "这是脚本的第1个位置参数:$4"
echo "这是脚本的第1个位置参数:$5"
echo "这是脚本的第1个位置参数:$6"
echo "这是脚本的第1个位置参数:$7"
echo "这是脚本的第1个位置参数:$8"
echo "这是脚本的第1个位置参数:$9"
echo "显示参数个数:$#"
echo "显示脚本全部参数:$*"
echo "显示进程ID:$$"
echo "显示前一命令运行后状态:$?"
影响变量的命令:
 -declare
 -export
 -readonly
 -set
 -shift
 -typeset
 -unset
引号、双引号、单引号、反引号、反斜杠
运算符、运算符类型