1、变量定义
定义变量如:
1 your_name="jack"
注意,变量名和等号之间不能有空格。同时,变量名的命名须遵循如下规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
2、变量运用
使用一个定义过的变量,只要在变量名前面加美元符号即可。如:
1 your_name="jack"
2 echo $your_name
3 也可以echo ${your_name}
3、只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
语法:readonly variable_name
4、删除变量
使用 unset 命令可以删除变量。
语法:unset variable_name
5、变量类型
字符串是shell编程中最常用最有用的数据类型:数字,字符串,数组。字符串可以用单引号,也可以用双引号。
1.字符串:
(1)单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
(2)双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
(3)获取字符串的长度:
1 echo ${#your_name}
(4)访问字符串里的字符:
1 echo ${your_name:1:2}
(5)查找字符串里的字符:
1 ·expr index ${your_name} a·
(6)expr命令详解:
1 NAME 2 expr - evaluate expressions 3 4 SYNOPSIS 5 expr EXPRESSION 6 expr OPTION 7 8 DESCRIPTION 9 --help display this help and exit 10 11 --version 12 output version information and exit 13 14 Print the value of EXPRESSION to standard output. A blank line below 15 separates increasing precedence groups. EXPRESSION may be: 16 17 ARG1 | ARG2 18 ARG1 if it is neither null nor 0, otherwise ARG2 19 20 ARG1 & ARG2 21 ARG1 if neither argument is null or 0, otherwise 0 22 23 ARG1 < ARG2 24 ARG1 is less than ARG2 25 26 ARG1 <= ARG2 27 ARG1 is less than or equal to ARG2 28 29 ARG1 = ARG2 30 ARG1 is equal to ARG2 31 32 ARG1 != ARG2 33 ARG1 is unequal to ARG2 34 35 ARG1 >= ARG2 36 ARG1 is greater than or equal to ARG2 37 38 ARG1 > ARG2 39 ARG1 is greater than ARG2 40 41 ARG1 + ARG2 42 arithmetic sum of ARG1 and ARG2 43 44 ARG1 - ARG2 45 arithmetic difference of ARG1 and ARG2 46 47 ARG1 * ARG2 48 arithmetic product of ARG1 and ARG2 49 50 ARG1 / ARG2 51 arithmetic quotient of ARG1 divided by ARG2 52 53 ARG1 % ARG2 54 arithmetic remainder of ARG1 divided by ARG2 55 56 STRING : REGEXP 57 anchored pattern match of REGEXP in STRING 58 59 match STRING REGEXP 60 same as STRING : REGEXP 61 62 substr STRING POS LENGTH 63 substring of STRING, POS counted from 1 64 65 index STRING CHARS 66 index in STRING where any CHARS is found, or 0 67 68 length STRING 69 length of STRING
2.数组:
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。
(1)定义数组:
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 值2 ... 值n)
(2)读取数组:
读取数组元素值的一般格式是:${数组名[下标]}
(3)获取数组的长度:
获取数组长度的方法与获取字符串长度的方法相同,例如:
1 # 取得数组元素的个数 2 length=${#array_name[@]} 3 # 或者 4 length=${#array_name[*]} 5 # 取得数组单个元素的长度 6 lengthn=${#array_name[n]}
6、变量作用范围
(1)用户自定义变量
在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
格式:
export 变量名=变量值 [...变量名n=变量值n]
(2)环境变量
环境变量配置文件:
全局配置文件:/etc/profile
用户配置文件:~/.bash_profile
(3)查看环境变量
set命令可以查看所有的shell变量,其中包括环境变量
1 #常见的环境变量 2 $USER 查看账户信息 3 $logname 登录相关信息 4 $UID 5 $Shell 6 $HOME 家目录 7 $pwd 8 $PATH 用户所输入的命令是在哪些目录中查找 9 $PS1 10 $PS2 11 $RANDOM 随机数
(4)位置变量
1 表示为:$n (n为1~9之间的数字) 2 #./test.sh one two three four five six 3 $0 表示文件名本身 4 one就是:$1 5 two就是:$2
(5)预定义变量
1 $# :命令行中位置参数的个数 2 $* :所有位置参数的内容 3 $? :上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0表示执行异常或出错 4 $$ :当前所在进程的进程号 5 $! :后台运行的最后一个进程号 6 $0 :当前执行的进程/程序名