变量就是用来储存信息的

1、自定义变量,本地变量

2、环境变量

3、位置变量

4、特殊变量


变量的命名规则

    变量名由字母、数字、下划线组成。不能够以数字开头

本地变量也称为自定义变量


1、变量赋值

   变量名=值   //注意:等号两边一定不能有空格

   # a=25

   # echo $a

25

  反例:

   # b = 52

bash: b: command not found

2、变量的声明(了解)   declare

  declare 

       -a:表示定义数组

       -r:定义只读变量

       -i:定义整型变量

  1)声明一个数组:

     # declare -a arr

     # arr[1]=10

     # arr[10]=100

  2)定义一个只读变量

    # declare -r a=123

    # echo $a

123

    # a=456

bash: a: readonly variable


3、变量的分类

    1)本地变量

    2)环境变量

      变量的作用域:也叫变量的作用范围

局部变量:本地变量比较自私,只能作用于当前shell

全局变量:环境变量是无私的,能够作用于当前shell及由他派生的子shell

      a、显示所有变量

    # set

 PS1='[\u@\h \W]\$ '  //命令提示符 

 PS2='> '           //命令未输入完成的标识

      b、查看环境变量

# env

      

      (1)本地变量定义

  变量名=值

      (2)环境变量定义

  export 变量名=值

        对于已经赋值的变量,如何变为环境变量?export

  # a=250

  # echo $a

250

  # export a

  查看当前是第几级shell?

# echo $SHLVL

    小实验:   

# uplook="hello"

# export uplook   //导出为环境变量

# ksh  //打开一个子shell

# echo $uplook

hello

# uplook="ha"     //在子shell中修改变量值  

# echo $uplook

ha

# exit

# echo $uplook   //父shell中值未改变

hello

   小实验说明:a、将变量导出成环境变量后,变量的值可以作用于当前shell及它的子shell;

      b、若子shell中修改该变量的值,只会影响到子shell的子shell,并不会影响到它的父shell。

4、调用变量、查看变量的值

   echo $PATH

   

5、取消变量

   # unset 变量名

   # a=250

   # unset a

   # echo $a


位置变量

# cat /etc/passwd /etc/group

   cat:$0

   /etc/passwd:$1 

   /etc/group:$2

小脚本

# vim posivar.sh

  #!/bin/bash

  echo '$0=' $0

  echo '$1=' $1

  echo '$2=' $2

  echo '$3=' $3

  echo '$4=' $4

  echo '$5=' $5

  echo '$6=' $6

  echo '$7=' $7

  echo '$8=' $8

  echo '$9=' $9

  echo '$10=' $10

  echo '$10=' ${10}

  echo '$#=' $#

  echo '$@=' $@

  echo '$*=' $*

# chmod +x posivar.sh

# ./posivar.sh a b c d e f g h i j k

$0= ./posivar.sh

$1= a

$2= b

$3= c

$4= d

$5= e

$6= f

$7= g

$8= h

$9= i

$10= a0

$10= j

$#= 11

$@= a b c d e f g h i j k

$*= a b c d e f g h i j k

$0 —— 表示当前运行的脚本或命令名

$1-${10} —— 表示脚本或命令的位置参数

$# —— 参数的个数

$@、$* —— 参数的列表

特殊变量:

$?  —— 上一条命令的返回结果,退出状态

   如果返回值是0,命令执行成功

   如果返回值非0,命令执行失败


$$ —— 查看当前shell的PID

   # echo $$

10273

!$和$_ —— 表示上一条命令的最后一个参数

   # ls /tmp/

   # cd !$

     cd /tmp/



变量的引用

  {}  

     为了避免发生歧义,将变量括起来

     username="abcd"

     id ${username}f