shell变量

来源:互联网 发布:笔筒淘宝 编辑:程序博客网 时间:2024/06/14 22:41

自定义变量:

方法一:         定义一个变量赋值

[root@centos6  ~]Name  =  tomcat

[root@centos6  ~]echo      $Name

tomcat

[root@centos6  ~]typeset  -r   NAME  #设置变量Name为只读属性来防止误操作

[root@centos6  ~]NAME=jerry

bash: NAME:  readonly  variable

shell 变量是无类型的


方法二:    定义一个变量不赋值

[root@centos6  ~]declare  Number

[root@centos6  ~]typeset  -i   Number           #使用-i选项设置整数变量,若是把字符型数据强制设给该变量,则结果为0


方法三:   通过read命令来设置变量,read从标准输入中读取变量值,使用-P选项添加提示信息

[root@centos6  ~]read    Value         #回车后输入变量值

22

[root@centos6  ~]read   -P   “Please   input   a  number:”  Values

Please  input  a number:100                                          #在提示符后输入要赋值给变量的值

[root@centos6  ~]echo  $Values

100


Set:

[root@centos6  ~]set             #查看当前系统中设置的所有变量及值

[root@centos6  ~]unset   Values   #删除变量


环境变量:

可以先定义一个变量,再通过export转换为坏境变量

[root@centos6  ~]TEST=pass

[root@centos6  ~]export  TEST

也可以直接定义坏境变量并赋值

export  NAME = TOM


Bash预设了很多的坏境变量,下面是比较常用变量名称及其含义:

BASHPID           当前bash进程的进程号

GROUPS            当前用户所属组的组ID号

UID                       当前用户的ID号码

HISTSIZE             命令历史的记录条数

HOSTNAME          当前主机的主机名称

HOME                     当前用户的家目录

PWD                       当前工作目录

PATH                        命令搜索路径

OLDPWD                前一个工作目录

PS1                           主命令提示符

PS2                          次命令提示符

RANDOM                0~32767之间的随机数


PATH讲解:

系统是如何知道某一个命令存放在哪里,其实Linux系统是通过PATH变量来搜索命令的,PATH变量的值就是一个目录集合

系统一直会按照循序执行下去

修改PATH路径要注意,不可以直接对其赋新值,否则将覆盖PATH现有的值

echo   $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin/usr/sbin:/usr/bin:/root/bin


PATH=/root           不能直接赋值,否则会把原有值都覆盖掉

由于这只是当前生效,所以只要推出命令行重新登录终端PATH变量将复原即可


PATH变量修改正确方法:是在原来基础上修改,所以在赋值时需要引用旧值,想永久保持修改,写在/etc/profile

PATH=$PATH:/root      在原有路径列表后追加目录


位置变量

位置变量的使用一般体现在脚本中

$0           代表当前Shell程序文件名称

$1            代表运行Shell程雪时的第一个参数

$2            为第二个参数(一次类推从$1~$9)

$#            代表Shell程序所有参数的个数

$*与@     均代表所有参数的内容,区别是$*将所有的参数作为一个整体,而$@将所有的参数分别作为个体看待

$$             代表当前进程的ID号

$?             表示程序的退出代码(一般0代表执行成功,非0代表执行失败)


[root@centos6  ~] cat   /tmp/test.sh

echo          "this  is  the  file   name:$0"

echo          " this    is  first   parameter:$1  "

echo           "this     is  first   parameter:$2   "

echo           "this    is   the  number  of  all  parameter:$#    "

echo           "this    is   the  number  of  all  parameter:$*    "

echo           "this    is   the  number  of  all  parameter:$@    "

echo            "this     is   PID:      $$"

[root@centos6  ~] bash   /tmp/test.sh   a  b  c       


变量的展开替换:

Linux中一般可以使用${变量名}的形式展开变量的值

判断变量存在性:   

${varname-word}            检查前面的值,前面有就不读取后面,前面没有就读取后面

${varname:-word}            如varname存在且非null,则返回其值,否则返回word

${varname:=word}           如varname存在且非null,则返回其值,否则设置为word

${varname:?message}    如varname存在且非null,则返回其值,否则显示Varname:message

${varname:+word}            如varname存在且非null,则返回其值,否则返回null



截取变量长度:

${variable#key}             从头开始删除关键词,执行最短匹配

${variable##key}          从头开始删除关键词,执行最长匹配

${variable%key}            从尾开始删除关键词,执行最短匹配

${variable%%key}          从尾开始删除关键词,执行最长匹配

${variable/old/new}        将old替换为new,仅替换第一个出现的old

${variable//old/new}       将old替换为new,替换所有old


${variable:7}   去掉变量前N个字符

${variable:7:2}去掉变量前面N个字符,同时只显示我规定的长度


查询变量值长度:

${#变量}    查看变量字符长度


搜索某一个开头的变量:

${!aa@}   搜索aa开头的所有变量

 


数组

Bash提供了数组变量功能,数组中所有变量都会编录成索引,数组索引是以0开始的整数

两种方式创建数组变量

使用declare    -a  name  可以预定义一个空数组变量

1.    A[1] =  11               A[2]=22

2.    B[aa    bbb    ccc  ]



使用A[*]或A[@]来调用所有数组成员

[root@centos6  ~]   echo   ${A[*]}

aa  bb  cc

[root@centos6  ~]   echo  ${A[@]}

aa  bb  cc


使用${#name[subscript]}  可以返回${name[subscript]}的长度,如果subscript是*或@,则返回数组中元素的个数

[root@centos6  ~]   echo  ${ B[0]} :  ${B[1]} : ${B[2]}

aa:bbb:ccc

[root@centos6  ~]   echo   "length  of  B_0  is   ${#B[0]}"

length  of  B_0  is 2

[root@centos6  ~]    echo    ${#B[@]}

3




0 0
原创粉丝点击