首页 > 代码库 > bash脚本(一)_变量和变量类型
bash脚本(一)_变量和变量类型
变量类型:实现确定数据的存储格式和长度。
字符
数值
整形:
浮点型:
布尔型:
真(ture)
假(false)
逻辑运算:
与:&
或:|
非:!
短路逻辑运算:
与:只要一个为假,结果一定为假
或:只要一个威震,结果一定为真。
非:
引用:
强引用:
在变量使用前,一定要事先声明,甚至还需要初始化。变量在初始化前内容为一段随机数。
数值初始化为0。 字符串初始化为NULL。
弱引用:变量用时声明,不需要区分类型。
变量赋值:
bash变量类别:
1.本地变量:
作用域为整个bash进程。仅对当前shell进程有效,对子shell无效。
#[set] [OPTION] VARNAME = VALUE
默认不带参数则显示当前shell中的变量。
例如:
#NAME=jerry 定义1个变量NANE,赋值jerry
#echo $NAME 输出变量NAME的值。
jerry
#bash 新建zishell
#echo $NAME 输出变量的值,无输出。
局部变量:
local VARNAME=VALUE 作用域为当前代码段。
2.环境变量
是本地变量的一种,作用域为是当前shell进程及其子进程。
脚本在执行时会在当前shell进程中启动一个子进程:
命令行中启动的脚本汇集成当前shell的环境变量。
系统自动执行的脚本(非命令行启动)就需要自我定义需要的各环境变量。
#export [OPTION] VARNAME 把本地变量声明成环境变量。
#export VARNAME=VALUE
#declare -x VARNAME=VALUE
#export VARNAME1:$VARNAME2 将VARNAME1附加到VARNAME2里边。
例如:
#export PATH=/usr/local/apache/bin:$PATH
将/usr/local/apache/bin 添加到环境变量$PATH。
查看当前shell中的环境变量:
#printenv
#env
#exprot
系统常见环境变量:
$HOSTNAME
$SHELL
$HISTORY
$PWD
$OLDPWD
$USER
$PAHT
$PS1 定义提示符前的内容,默认PS1=‘[\u@\h \W}]\$‘
\u 当前用户名
\H 完整的主机名
\h 完整主机名的第一个点前的内容
\W 显示basename,基名。
\w 显示完整路径
\# 显示命令号
\! 显示在命令历史中的序号
\$ UDI=0显示#,普通用户显示$
$PS2 第二个提示符,默认是>号。上个命令未结束。续行符号。
$PS3
$PS4 执行脚本追踪命令的时候显示+号
3.特殊变量
$? 用于引用前一个命令的执行状态的返回值。
程序的返回值:
1.程序自身执行结果的返回值。
2.程序执行状态的返回值(0-255)。
0 执行成功
1-255 执行失败,其中1、2、127被系统保留。
例如:
#ls /etc
#echo $?
0
#lss /et
#echo $?
127
#id student
#echo $?
0
#id student $> /dev/null
#echo $?
0
4.位置变量
$1,$2... 用来引用脚本的参数。
bash支持的引号
1.‘‘ 单引号
强引用,引号中的内容原封不动输出。
2."" 双引号
弱引用,引号中的变量要进行变量替换。
3.`` 反引号
实现命令替换
变量的声明和赋值
声明:
#declare [OPTION] VARNAME 声明一个变量。
-i 声明为整形
-a 声明为数组
-r 声明为只读变量
-x 声明为环境变量
赋值:
#VAR1=VALUE
#VAR2=$VAR1
#VAR1=${VAR2-VALUE}
#VAR2=${VAR1}VALUE
例如:
#declare -i AGE
#AGE=23
#A=30
#declare -i AGE=23
#declare NAME="tony max"
#NAME= "$AGE"
#AGE=${A:-40} 若A有值,则AGE的值为A的值,若没有则赋值给40
变量的引用:
只有在引用的时候才带上$。
${VARNAME} 花括号可以省略。
例如:
#ANIMAL=pig
#echo "there are some $ANIMAL"
there are some pig
#echo "there are some ${ANIMAL}s"
there are some pigs
#echo "there are some $ANIMALs"
there are some
这里不加花括号,系统会认为变量名为ANIMALs。所以无法显示。
#echo ‘there are sonme ${ANIMAL}s‘
there are sonme ${ANIMAL}s
使用‘‘是强引用,引号中的内容原封不动的输出。
变量的撤销:
#unset [OPTION] VARNAME
例如:
#unset NAME
#echo $NAME
软件设备(bit bucket):
/dev/null 数据黑洞,是软件模拟的设备。
/dev/zero 泡泡机,生成大量的0。
/dev/random 随机数生成器,是基于中断的IRQS产生随机数的。IRQS跟一些特殊的硬件绑定,基于这些硬件的interrupts将会提供给random设备。
/dev/urandom 随机数生成器,不受interrupts的限制。
脚本:
命令的堆砌,按照实际需要结合命令流程控制机制实现的源程序。
任何脚本的第一行都得有shebang(魔数):
#!/bin/bash
#为注释
其余内容都被视为脚本的内容。
脚本的执行:
#./BASHNAME.sh
#bash BASHNAME.sh
或
将当前路径添加到PATH中。
本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1599920
bash脚本(一)_变量和变量类型