#设置变量
export  BL="123123"

#显示变量
echo $BL
printf $BL
env $BL

#取消变量
unset BL

a=123-a$
b='456-$a'
c="789-a$"

echo "$a"
echo "$b"
echo "${c}"

http://blog.51cto.com/oldboy/760192

#进程状态变量

$0 //获取当前执行脚本文件名,如果执行脚本带路径会一起显示
$n //获取当前shel脚本的第n个参数值,n=1..0,当n为0时表示脚本的文件名,如果n大于9,就用大括号括起来${10}
$*    //获取当前脚本所有参数,
$#    //获取当前shell命令行中传参数的总个数
$?    //获取执行上一个命令的返回值(0为成功,非0为失败)
$@   //这个程序的所有参数
$$    //当前shell进程号PID
$!    //获取执行上一个指令的PID
$_    //在此之前执行的命令或脚本的最后一个参数
$-     //显示shell使用的当前选项,与set命令功能相同


#bash 内部变量

echo   //输出

eval args   //当shell执行到eval语句时,shell读入参数args,并将他们组合成一个新的命令,然后执行

export   //shell可以恋情export把它的变量向下带入子shell,从遥让子进程继承父进程中的环境变量。但子shell不能用export把它的变量向上带入父变量。

readonly    //将就一个用户定义的shell变量标识为不可变。不带任何参数的readonly命令将显示出所有只读的shell变量

read     //从标准输入读字符串等信息,传给shel程序内部定义的变量

wait    //使shell等待在后台启动的所有子进程结束。wait的返回值总是真。

exit  11        //退出.返回值给$?变量

retrun 0    返回值给$?变量

.        //读入指定shell程序文件并依次执行文件中的所有语句

shift  // 移动位置变量


#变量的子串替换知识

$(#BL)   //加#取变量长度
echo $BL |wc - L  取长度

${BL:2}     //取指定字符
${BL:2:4}    //取指定字符

cat -c 3-4  //取指定字符

${BL#xxx}        //删除变量里xxx的内容

-z            //是否空
-a            //并且
-o            //或
-eq           //等于
-ge           //大于等于
-gt           //大于
-le           //小于等于
-lt           //小于
-ne           //不等于
-f            //检查文件是否存在(例如,if [ -f "filename" ])
-d            //检查目录是否存在

[ -f "somefile" ]  判断是否是一个文件
[ -x "/bin/ls" ]     判断/bin/ls是否存在并有可执行权限
[ -n "$var" ]        判断$var变量是否有值
[ "$a" = "$b" ]   判断$a和$b是否相等
-r file                  用户可读为真
-w file                用户可写为真
-x file     用户可执行为真
-f file        文件为正规文件为真
-d file       文件为目录为真
-c file     文件为字符特殊文件为真
-b file       文件为块特殊文件为真
-s file     文件大小非0时为真
-t file      当文件描述符(默认为1)指定的设备为终端时为真
#变量的数值计算

(())、let、expr、bc(小数)、 $[]

比较大小

[root@A-host sh]# echo $((6<2))
0  //假,no,
[root@A-host sh]# echo $((6>2))
1    //真,yes,
[root@A-host sh]# echo $((6==2))
0    //假,no,

#!/bin/bash
echo "结果= $(($1))"


#shell变量输入

read  //从标准输入获得参数
-p    //设置提示信息  
-t    //设置输入等待时间,单位为秒
#脚本控制
nohup xxx.sh &    //后台执行

ctl+c        //停止当前
ctl+z        //暂停当前
bg        //放到后台
fg        //放到前台
jobs        //显示后台执行的脚本或任务
pstree    //显示进程状态树
top        //显示进程
nohup        //退出系统之后继续工作
pgrep    //查找匹配条件的进程

break n        //如果省略n,则跳出整个循环
continue n    //如果省略n,则跳出本次循环
exit n        //如果省略n,则退出当前shell脚本
return n        //如果省略n,函数退出,下个shell个通过$?接受返回值
#windows下编写脚本问题。

使用 dos2unix 对脚本进行格式化。