变量的取用
echo $变量名 或 echo ${变量名}
例如取出PATH
echo $PATH 或 echo ${PATH}
变量的设定
例如设定一个变量myname
echo $myname
myname=del1214
echo $myname
del1214
变量设定规则
1、变量与变量内容用一个等号来连接
myname=del1214
2、等号两边不能直接接空格,下面的赋值是错误的
myname = del1214 或 myname= del 1214
3、变量名只能是英文字母与数字,但第一个字符不能使数字,下面是错误的
1myname=del1214
4、变量内容有空格符可以用双引号"或单引号'使内容连接起来,但
双引号内的特殊字符$,可以保留原有的特性,如下:
var="lang is $LANG" 则echo $var 显示 lang is en_US
单引号内的特殊字符则为一般字符,如下:
var='lang is $LANG' 则echo $var 显示 lang is $LANG
5、使用转义字符将特殊符号(回车,$,\,空格,'等)变成一般字符
6、在变量中使用命令,需要用`命令`或$(命令),例如取得内核版本号
version=$(uname -r)
echo $version
2.6.xxxxxxxxx
7、变量内容相加(字符串相加),使用"$变量名"或${变量},例如:
PATH="$PATH":/home/bin
8、将变量转为环境变量,使用export命令
export PATH
9、环境变量一般为全大写字母,自定义变量使用小写字母
10、取消变量命令unset,unset 变量名
变量由键盘输入read
要读取来自键盘输入的变量,使用read指令
read [-pt] 变量名
-p: 后面接提示字符
-t: 后面接等待的秒数
例如:
read -p "please type your name" -t 10 yourname
变量类型的定义declare/typeset
declare
declare [-aixr] 变量名
-a: 将后面的变量名定义为数组array类型
-i: 将后面的变量名定义为整数数字integer类型
-x: 将后面的变量名定义为环境变量,功能同export
+x: 取消环境变量
-r: 将变量名定义为readonly类ing,不能更改不能unset
只读属性一旦确定,只能通过注销再登陆来恢复该变量的类型
bash对变量类型的基本定义
变量类型默认为字符串,不明确指定类型就是字符串,1+2是字符串不会自动算成3
bash中的数值运算只能是整数,1/3结果是0
typeset
typeset [-aAfFgilrtux] [-p] name[=value]
说明不是很全,还是用declare吧
变量中数组array的使用
设定方法:
var[index]=content
例如:
var[1]="aaa"
var[2]="bbb"
var[3]="ccc"
echo "${var[1]},${var[2]},${var[3]}"
aaa,bbb,ccc
变量内容的删除与替换
变量设定方式 | 说明 |
${变量#关键词} ${变量##关键词} | 若变量内容从【头】开始的数据符合关键词,则将符合的最【短】数据删除 若变量内容从【头】开始的数据符合关键词,则将符合的最【长】数据删除 |
${变量%关键词} ${变量%%关键词} | 若变量内容【从后向前】的数据符合关键词,则将符合的最【短】数据删除 若变量内容【从后向前】的数据符合关键词,则将符合的最【长】数据删除 |
${变量/旧字符串/新字符串} ${变量//旧字符串/新字符串} | 若变量内容符合旧字符串则【第一个】旧字符串会被新字符串取代 若变量内容符合旧字符串则【全部的】旧字符串会被新字符串取代 |
变量内容的判断与替换
变量设定方式 | str没有设定null | str为空字符串"" | str已设定为非空字符串 |
var=${str-expr} var=${str:-expr} | var=expr var=expr | var= var=expr | var=$str var=$str |
var=${str+expr} | var= | var=expr | var=expr |
var=${str:+expr} | var= | var= | var=expr |
var=${str=expr} var=${str:=expr} | str=expr var=expr str=expr var=expr | str不变 var= str=expr var=expr | str不变 var=$str str不变 var=$str |
var=${str?expr} | expr输出至stderr | var= | var=$str |
var=${str:?expr} | expr输出至stderr | expr输出至stderr | var=$str |
我个人的理解是
-:变量中不包含后面字符串时
+:变量中包含后面字符串时
=:变量等于后面字符串时
?:输出
:冒号:变量为空字符串时取不加冒号时相反的动作