Shell变量

一、基本语法

在Shell编程不需要事先定义变量,也没有变量类型的区分(所有变量都是字符串),可以说“=”和“$”就是Shell变量的一切。Shell变量以字母或“”开头,由字母、数字和“”组成,变量名区分大小写

  • “=”,赋值符号。等号两边不可以有空格

    
    #直接赋值
    
    A=aaa
    A="Hello word!"
    A='Hello word!'    #但引号和双引号都行,但还是有区别的,后面会讲到
    
    #传命令的输出值
    
    A=`ls /etc`
  • **“$”,取值符号。**dollar符后面直接加变量名即可

    
    #直接取变量的值
    
    B=$A
    
    #取命令的输出值
    
    B=$(ls /etc)
  • 命令可以接受变量作为参数

    
    #需要取值,不能直接把变量名写上
    
    echo $B
  • 双引号与单引号的区别
    双引号里面可以解析特殊字符,而单引号括起来的字符串是纯字符串

    NAME=DK
    echo "My name is $NAME"   #输出My name is DK
    echo 'My name is $NAME'	#输出My name is $NAME
  • 字符串重组

    
    #例一
    
    MYHOME=/home/DK
    ls $MYHOME/Document
    
    #以上命令等同于 ls /home/DK/Document
    
    
    
    #例二,与上例不同的是变量名后没有特殊符号隔开
    
    STRING=String
    echo ${STRING}One
    
    #以上命令等同于 echo StringOne
    
    
    #注,echo $STRINGOne 这样写的话系统是无法辨识变量的
    
  • set命令和unset命令
    set命令可以列出所有变量,而unset后跟变量名会卸载该变量

    set | grep STRING  #输出NAME='String'
    unset STRING   #该变量被卸载

二、位置变量和特殊变量

位置变量和特殊变量都是Shell脚本固有的变量

  • 位置变量

    - $0 脚本名称
    - $N 参数N
  • 特殊变量

$#    表示变量的个数,常用于循环
$@    当前命令行所有参数。置于双引号中,表示个别参数
$*    当前命令行所有参数。置于双引号中,表示将命令行所有参数当初一个单独参数
$-(连字号)    在引用数给予Shell的选项
$?    表示上一个命令退出的状态
$$    表示当前进程编号
$0    表示当前程序名称
$!    表示最近一个后台命令的进程编号
$HOME    表示当前用户根目录
$IFS    表示内部的字段分隔符
$LANG    当前locale默认名称
$PATH    环境变量
$PPID    父进程编号
$PWD    当前工作目录
#-------------------------------------$?”的参考值
0    成功退出
>0    退出失败
1-125    命令退出失败,失败返回的相关值由程序定义(譬如,程序内退出只执行 exit 2,则返回为2126    命令找到了,但无法执行
127    命令找不到
>128    命令因受到信号而死亡

参考资料:

http://www.cnblogs.com/rond/p/3543367.html

你可能感兴趣的:(Linux,shell,Linux,变量,位置变量,特殊变量)