Chinaunix首页 | 论坛 | 博客
  • 博客访问: 552887
  • 博文数量: 181
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1498
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-22 15:17
个人简介

用发呆的时间来理清自己的思绪

文章存档

2015年(7)

2014年(134)

2013年(40)

分类: LINUX

2014-05-31 16:13:32

原文地址:Bash中的变量 作者:ruiqingzheng

                                              

Bash中的变量
1.
用户定义的变量
变量的定义
  用户定义的变量有字母数字及下划线组成,并且变量名的第一个字符不能为数字.
           
与其它UNIX名字一样,变量名是大小写敏感的.
 
对于变量,用户可按如下方式赋值:
              name = value
变量的引用
              在引用变量时,需在前面加$符号,用户也可以在变量间进行相互赋值(一个变量的值赋给另一个变量),:
              (
前面的$是命令提示符)
              $JOHN=john
              $NAME=$JOHN
              $echo Hello $NAME
              Hello john
              
              
也可以用变量和其他字符组成新的字,这时可能需要把变量用{}括起,:

              $ SAT = Satur
              $ echo Today is ${SAT}day
              Today is Saturday

             
对于未赋值的变量,Bash以空值对待,用户也可以用unset命令清除给变量
             
赋的值.
              
              Bash
中还可以使用数组变量,其赋值有两种:
              
              (1) name[index] = value
              (2) name = (value1 ... valuen)
此时下标从0开始
                            ch=(1 2 3 4)
                            echo “${ch[0]}”
                            n=1
                            echo “${ch[$n]}”
              
             
数组下标的范围没有任何限制,同时也不必使用连续的分量.
 
Bash中关于变量的内建命令:
              
              (1) declare
typeset.两者具有一样的功能.其选项有:
                  [-/+]a   
设置/撤消变量的数组属性
                  [-/+]i   
设置/撤消变量的整数属性
                  [-/+]r   
设置/撤消变量的只读属性
                  [-/+]x   
设置/撤消变量的输出属性
                  -p var   
显示变量属性
              (2) export
local.
                  export
把变量输出到环境中,用法为:
                  export name
                  export name = value         

                 
这里需要简单介绍一下export的作用:Bash shell执行一个
                 
程序时,将首先为该程序建立一个新的执行环境,称为子shell,
                 
Bash Shell中变量都是局部的,即它们只是在创建它们的子
                  Shell
中是有意义的,使用export,变量被设置为全局变量,
                 
时可以被其它子Shell所识别

                  local
标记变量为局部的(如只能被函数内部使用),用法为:
                  local name
                  local name = value
              (3) readonly.
                 
指定变量为只读,执行后,改变量不能被再次赋值,用法为:
                  readonly name
2.
位置变量或Shell参数
              Bash Shell在解释用户命令时,将把命令行的第一个字作为命令 $0 ,
而其它字作为参数通过位置变量传递给程序.$1,...,$9分别代表第一,...,九个参数.
其中1-9是真正的参数名,"$"符只是用来标识变量的替换.
             
位置变量$0指命令对应的可执行名.
             
其它的还有:
              $#   
送给命令的参数个数
              $@   
所有的参数,每个用双括号括起
              $*   
所有的参数,用双括号括起
            3.
Shell有关的变量
             (1) Shell
自身设置的一些常用变量:
               LINENO      
正在执行的命令在脚本中的行号
               PWD         
用户当前目录的全名
               OLDPWD      
最近一次执行cd之前,用户当前目录的全名
               PPID        
父进程ID
               $           
当前进程ID
               RANDOM      
随机数(范围0-32767)
               SECONDS      Bash Shell
的运行时间,单位是秒
               REPLY        select
read命令使用,以后会讲到
               OPTARG
               ORTIND      
这两个变量由getopt命令设置
               UID         
当前用户的User ID
               _           
上一条命令使用的最后一个参数
             (2)
影响Shell行为的一些常用环境变量:
               PATH        
命令搜索路径,以冒号为分隔符.注意与DOS下不同的是,
                            
当前目录不在系统路径里
               HOME        
用户home目录的路径名,cd命令的默认参数
               COLUMNS     
定义了命令编辑模式下可使用命令行的长度
               EDITOR      
默认的行编辑器
               VISUAL      
默认的可视编辑器
               FCEDIT      
命令fc使用的编辑器
               HISTFILE    
命令历史文件
               HISTSIZE    
命令历史文件中最多可包含的命令条数
               HISTFILESIZE
命令历史文件中包含的最大行数
               IFS         
定义SHELL使用的分隔符
               LOGNAME     
用户登录名
               MAIL        
指向一个需要SHELL监视其修改时间的文件.当该文件修改后,
                            SHELL
将发消息You hava mail给用户
               MAILCHECK    SHELL
检查MAIL文件的周期,单位是秒
               MAILPATH    
功能与MAIL类似.但可以用组文件,以冒号分隔,每个文件后
                           
可跟一个问号和一条发向用户的消息
               SHELL        SHELL
的路径名
               TERM        
终端类型
               TMOUT        SHELL
自动退出的时间,单位为秒,若设为0则禁止SHELL自动退出
               PROMPT_COMMAND      
指定在主命令提示符前应执行的命令
               PS1         
主命令提示符
               PS2         
二级命令提示符,命令执行过程中要求输入数据时用
               PS3          select
的命令提示符
               PS4         
调试命令提示符
               MANPATH     
寻找手册页的路径,以冒号分隔
               LD_LIBRARY_PATH     
寻找库的路径,以冒号分隔
Bash
中对变量的操作
1.条件变量替换:
              Bash Shell
可以进行变量的条件替换,既只有某种条件发生时才进行替换,替换
           
条件放在{}.
             
(1) ${value:-word}
                  当变量未定义或者值为空时,返回值为word的内容,否则返回变量的值.
            
 (2) ${value:=word}
                 
与前者类似,只是若变量未定义或者值为空时,在返回word的值的同时将
                  word
赋值给value
              (3) ${value:?message}
                  
若变量以赋值的话,正常替换.否则将消息message送到标准错误输出(
                 
此替换出现在Shell程序中,那么该程序将终止运行)
         &

[root@localhost code]# unset ans
[root@localhost code]# unset var
[root@localhost code]# var=${ans:y}
[root@localhost code]# echo $var

[root@localhost code]# echo $ans

[root@localhost code]# var=${ans:-y}
[root@localhost code]# echo $var
y
[root@localhost code]# echo $ans

/home/lee#read name;echo ${name:?"\"Must enter your name\""}
abc
abc
/home/lee#read name;echo ${name:?"\"Must enter your name\""}

ksh: name: "Must enter your name"

 

 

阅读(636) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~