您的位置:首页 > 运维架构 > Shell

Linux下Bash的变量使用,echo,read,declare,typeset,array,

2015-08-22 11:04 561 查看


变量的取用

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没有设定nullstr为空字符串""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
我个人的理解是

-:变量中不包含后面字符串时

+:变量中包含后面字符串时

=:变量等于后面字符串时

?:输出

:冒号:变量为空字符串时取不加冒号时相反的动作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bash linux path integer