bash变量类型: 环境变量 本地变量(局部变量) 位置变量 特殊变量 本地变量:set VARNAME=VALUE: 作用域为整个bash进程;
局部变量:
local VARNAME=VALUE:作用域为当前代码段;环境变量:作用域为当前shell进程及其子进程;(操作变量本身使用VARNAME,操作变量的值则只用$VARNAME)
export VARNAME=VALUEVARNAME=VALUEexport VARNAME “导出”[root@localhost ~]# export name
[root@localhost ~]# bash[root@localhost ~]# echo $namecxiong[root@localhost ~]# bash[root@localhost ~]# echo $namecxiong引用变量:${VARNAME},括号有时可以省略
[root@localhost ~]# name=cxiong
[root@localhost ~]# echo $namecxiong[root@localhost ~]#[root@localhost ~]# echo "my name is $name"
my name is cxiong[root@localhost ~]# 位置变量:$1, $2, ...特殊变量:
$?: 上一个命令的执行状态返回值;[root@localhost ~]# echo $?
0[root@localhost ~]# ll /varrls: cannot access /varr: No such file or directory[root@localhost ~]# echo $?2[root@localhost ~]#程序执行,可能有两类返回值:
程序执行结果 程序状态返回代码(0-255) 0: 正确执行 1-255:错误执行,1,2,127系统预留; 输出重定向:>>>2>2>>&>撤消变量:
unset VARNAME[root@localhost ~]# unset name
[root@localhost ~]# echo $name[root@localhost ~]#
查看当shell中变量:
set[root@localhost ~]# set
BASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepathBASH_ALIASES=()BASH_ARGC=()BASH_ARGV=()BASH_CMDS=()查看当前shell中的环境变量:
printenvenvexport脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序
shebang: 魔数
#!/bin/bash# 注释行,不执行内核只能执行ELF类型
[root@localhost ~]# nano first.sh
[root@localhost ~]# ll first.sh[root@localhost ~]# chmod +x first.sh
[root@localhost ~]# pwd[root@localhost ~]# first.sh
#
# /etc/fstab# Created by anaconda on Sun Jun 21 02:15:00 2015## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/null: 软件设备, bit bucket,数据黑洞
$?
[root@localhost ~]# id student &> /dev/null
[root@localhost ~]# echo $?1[root@localhost ~]# id rhel &> /dev/null [root@localhost ~]# echo $?0[root@localhost ~]#脚本在执行时会启动一个子shell进程; 命令行中启动的脚本会继承当前shell环境变量; 系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;