|
- 环境变量:可以在所有的用户进程中使用。登录进程是父进程,shell进程是子进程。父进程初始化环境变量,子进程就都可以使用了。对应的声明文件是:/etc/profile 、~/wuxiangdong/.bash_profile
变量的声明方式,export JAVA_HOME='/usr/local/jdk7'
- 本地变量(局部变量) :作用域在一个shell,关闭终端,再开启一个,原来声明的变量不见了;变量设置为只读后不可废弃,不可修改。变量的声明方式:LOCALTEST=‘HELLO,BOY’echo$LOCALTEST。
- 局部变量:作用域只对当前的代码段有效,local VARNAME=value。
- 位置变量:$1,$2,$3,$4这样的变量,取参数的位置。
- 特殊变量:
$?上一个命令的状态返回值。
$#参数的个数
$*参数列表
$@参数列表
$0命令本身 脚本本身
程序状态返回代码(0-255)0: 正确执行1-255:错误执行,1,2,127系统预留;
注意:
set命令结果是与shell类型有关。
env查询的是当前用户所有的环境变量的情况。
export 查询的是当前导出成用户变量的shell变量。
撤销变量:unset
变量名称:
1、只能包含字母、数字和下划线,并且不能数字开头;
2、不应该跟系统中已有的环境变量重名;
3、最好做到见名知义;
变量声明格式:
- declare -i SUM=0
integer
- -x(声明成环境变量)
- let A=0;(声明算术变量)
测试脚本是否有语法错误:
bash -n 脚本 检查是不是有错误
bash -x 脚本:单步执行
3.shell编程基础
1)shebang:魔数
#!/bin/bash
#开头的是注释行,是不执行的。
/dev/null :软件设备,bit bucket,数据黑洞。
注意事项:
脚本在执行时会启动一个子shell进程;
命令行中启动的脚本会继承当前shell环境变量
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;
2)脚本的开始
SHELL-1
1 #有没有bash结尾的用户,有显示出来,没有显示没有!
2 #!/bin/bash
3 #
4 LINES=`grep "\" /etc/passwd &> /dev/null; then
echo "No such user: $USERNAME."
exit 1
fi
USERID=`grep "^$USERNAME\>" /etc/passwd | cut -d: -f3`
GROUPID=`grep "^$USERNAME\>" /etc/passwd | cut -d: -f4`
if [ $USERID -eq $GROUPID ]; then
echo "Good guy."
else
echo "Bad guy."
fi
|
|
|