bash 是一个为GNU计划编写的Unix shell。
程序开发语言有两种:
1.解释型语言:perl,python,ruby,bash等,由解释器负责读取一行执行一行,
2.编译型评议:c,c++,c# 等,由编译器把整个程序转换为二进制格式,而后执行
变量: 内存空间,可用于存储数据
bash变量:
环境变量 : 作用域为当前的shell进程和子进程。
设置一个新的环境变量规则为:export VARNAME=VALUE,环境变量有全局环境变量和本地环境变量,全局环境变量是指对所有登陆用户都起作用的环境变量,文件在 /etc/profile ,/etc/profile.d/*.sh , /etc/bashrc ,如在编译安装mysql后,可以在/etc/profile文件中最后加入export PATH=/usr/local/mysql/bin:$PATH或用命令 echo "export PATH=/usr/local/mysql/bin:$PATH" >>/etc/profile 注:/usr/local/mysql/bin是指mysql的安装路径然后执行source /etc/profile 使变量生效,即可以使用mysqladmin命令来设置mysql密码。查看当前环境变量:env 或export
本地变量(局部变量): 只对当前shell进程有效:对其子shell及其它shell都无效;例
[root@localhost ~]# a=6 [root@localhost ~]# echo $a 6 ##变量引用:${VAR_NAME} 用$符加变量名。
位置变量:$1,$2,…….,$1表示第一个参数,$2第二个参数,类推,$0: 执行脚本时的脚本路径及名称 basename $0 取得脚本的名称,$# 位置参数的个数,seq 0 $# 表示从0到最后一个参数的列表,可以用于循环。
特殊变量:
$? :上一个命令的返回值:程序执行结果,如果返回0 代理正确执行,1-255 :错误执行,数值1,2,127 为系统预留的返回值。
$# 位置参数的个数
"$*" 所有的位置参数(作为单个字符串) *
"$@" 所有的位置参数(每个都作为独立的字符串)
${#*} 传递到脚本中的命令行参数的个数
${#@} 传递到脚本中的命令行参数的个数
$? 返回值
$$ 脚本的进程ID(PID)
$- 传递到脚本中的标志(使用set)
$_ 之前命令的最后一个参数
$! 运行在后台的最后一个作业的进程ID(PID)
* 必须被引用起来, 否则默认为"$@".
bash 的配置文件
全局配置 /etc/profile , /etc/profile.d/*.sh , /etc/bashrc
个人配置 用户目录下 ~/.bash_profile, ~/.bashrc
profile类的文件: 1.设定环境变量,如设置mysql的环境变量 2. 运行命令或脚本
bashrc类的文件: 1.设定本地变量 2 定义命令别名 如 alias cls=clear 即可用cls起到clear的作用
用户登陆时,读取配置文件的顺序是 /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc 用su命令更换用户名是,读取的配置文件为 ~/.bashrc --> /etc/basrc --> /etc/profile.d/*.sh
shell 变量类型:事先确定数据的存储格式和长度(数据表示范围)
字符型:ASCII码,128个基本字符,用一个字节表示,即8位
数值型:
整型 即整数,二进制表示,4位一个数字,两个数字即8位
浮点型 近似值,带有小数的,单精度,双精度,
布尔型: 日期型,对象,一般编程不会用到
shell中一般默认定义变量为字符型,如果要用做数值计算,就要用到bc 命令,在命令行输入bc命令就可以进行数值计算。运算符有+、-、*、/、%(取余)、^(指数,即幂),bc默认是整型,如果要进行小数点以后的运算,即浮点运算,需要输入命令scal=number,number即保留几位小数。
示例:
[root@localhost ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty‘.
1+8+5
14
5^4
625
10%8
2
scale=2
3/7
.42
quit
如果要在shell中直接运用算术运行,可以有以下几种方法
A=3
B=6
1、let 算术运算表达式
let C=$A+$B
2、$[算术运算表达式]
C=$[$A+$B]
3、$((算术运算表达式))
C=$(($A+$B))
4、expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用
C=`expr $A + $B`
bash变量也可声明,甚至可以指定类型:declare
declare -i VAR_NAME: 声明一个整型变量
declare -x VAR_NAME: 声明一个环境变量
declare -a VAR_NAME: 声明一个数组
如果bash中变量没有指定类型,默认为字符号变量,查看所有变量,set 可以显示出来。
原文:http://piao719.blog.51cto.com/287547/1397828