Bash编程学习笔记(一)
Shell变量及相关的命令
一个变量就是内存中被命名的一块存储空间.一个Shell变量的名字可以包含数字,字母和下划线,变量名的开头只准许是字母和下划线.变量名中的字母是大小写敏感的,变量名没有限制.
Shell可以是以下两种:Shell环境变量和用户定义变量.
1.Shell环境变量
环境变量是用来定制Shell的运行环境,保证Shell命令的正常运行.所有环境变量会传递给Shell的子进程,这些变量大多数在/etc/profile文件中初始化,而/etc/profile是在用户登录的时候执行的,这个文件由系统管理员编写,用来为系统的所有用户建立一个通用的环境.可以在~/.profile文件中给部分或全部环境变量赋不同的值,它同样在登录的时候执行,或者在~/.bashrc,~/bash_login和~/.bash_profile中修改,它们在Bash启动的时候执行.
一些重要的可修改的Bash环境变量
BASHBash的完整路径名
CDPATH包含cd命令要逐个查找的路径,cd命令在这些路径下查找 作为参数传递给它的目录名.如果CDPATH没有设置,cd命令则查找当前目录
EDITOR在应用程序中使用的默认的编辑器
ENVlinux查找配置文件的路径
HISTFILE 存放历史记录的文件的路径名
HOME用户的主目录名字
IFSBash用来分割命令行中参数的分割符号
MAIL用户的主目录的命令
MAILCHECK Shell应该多久检查一次用户的系统邮箱,并在有新邮件的时候通知用户
PATH包含用户检索路径的变量 --Shell依据这个变量在它指出的目录下面查找外部命令和程序
PPID父进程的ID号
PS1出现在命令行的主Shell提示符,通常被设置为$,但是这是可以修改的
PS2出现在一个命令的第二行的二级Shell提示符号
PWD很熟悉,当前工作目录的名字
TERM用户的控制终端的类型
一些重要的只读Bash环境变量
$0程序的名字
$1~$9命令行参数1~9的值
$*所有命令参数的值
$@所有命令行参数的值
$#记录了命令行参数的总个数
$$当前进程的ID号
$?最近一次命令的退出状态
$!最近一次后台进程的ID号
2.用户定义的变量
用户定义的变量在Shell脚本中用来作为临时的存储空间,他们的值在程序执行的过程中是可以改变的.这些变量可以设置为只读的,而且也可以被传递给定义它们的那个Shell脚本,不同于其他的编程语言,在Bash编程编程语言中,不需要定义并初始化一个Shell变量,一个没有被初始化的Shell变量自动地被初始化为一个空串.
set命令可以打印出目前所有的Shell变量.
好了,来先写一个简单的Shell吧(为了避免自己写的脚本与系统命令重名,建议shell脚本以.sh结尾. 但自己写的脚本还是可能与系统自带的脚本重名, 建议命名前通过$ which Shellname.sh).
vi一个hello.sh放在ScriptFile文件夹下
$vi hello.sh
$cd ScriptFile$./hello.sh
yaoyuan@yaoyuan-desktop:~/ScriptFile$ ./hello.shyaoyuan tty7 2008-10-11 21:09 (:0)yaoyuan pts/0 2008-10-11 22:47 (:0.0)
yaoyuan-desktop$PS1='\t$'23:29:56$PS1='\s-\v$'bash-3.2$PS1='\v$'3.2$PS1='\H$'yaoyuan-desktop$PS1='\s$'bash$PS1='\H$'yaoyuan-desktop$
yaoyuan-desktop$declare -i age=42yaoyuan-desktop$echo $age42
yaoyuan-desktop$declare -rx OS=linuxyaoyuan-desktop$echo $OSlinux
yaoyuan-desktop$echo $age42yaoyuan-desktop$age=100yaoyuan-desktop$echo $age100