03变量和引用

03变量和引用

深入认识变量

什么是变量

变量的命名

变量的类型

实例:

  1. #! /bin/bash 
  2.  
  3. x=123 
  4. let "x += 1" 
  5. echo "x = $x" 
  6. echo # 输出空行 
  7.  
  8. y=${x/1/abc} 
  9. echo "y = $y" 
  10. declare -i y 
  11. echo "y = $y" 
  12. let "y += 1" # 遇到含有非数值的字符串,字符串转换为整数0 
  13. echo "y = $y" 
  14. echo  
  15.  
  16. z=abc22 
  17. echo "z = $z" 
  18. m=${z/abc/11} 
  19. echo "m = $m" 
  20. let "m += 1" 
  21. echo "m = $m" 
  22. echo 
  23.  
  24. # 空变量或者空串转换为整数都为0 
  25. n="" 
  26. echo "n = $n" 
  27. let "n += 1" 
  28. echo "n = $n" 
  29. echo 
  30.  
  31. echo "p = $p" 
  32. let "p += 1" 
  33. echo "p = $p" 
  34.  
  35.  

变量的定义

可以直接使用变量来定义变量,例如:

  1. #! /bin/bash 
  2.  
  3. a=1 
  4. b="hello world" 

使用declare来声明变量,基本语法:

  1. declare attribute variable 

常用的属性:
-p:
-i:
-r:只读变量
-a:数组
-f:函数
-x:将变量设置为环境变量,这样随后的脚本和程序都可以使用
实例:

  1. #! /bin/bash 
  2. x=6/3 
  3. echo "x = $x" 
  4.  
  5. declare -i x 
  6. echo "x = $x" 
  7. x=6/3 
  8. echo "x = $x" 
  9.  
  10. x=hello 
  11. echo "x = $x" 
  12. # bash并不内置对浮点数的支持 
  13. x=3.14 
  14. echo "x = $x" 
  15.  
  16. declare +i x 
  17. x=6/3 
  18. echo "x = $x" 
  19. x=$[6/3
  20. echo "x = $x" 
  21. x=$((6/3)) 
  22. echo "x = $x" 
  23. declare -r x 
  24. echo "x = $x" 
  25. x=5 
  26. echo "x = $x" 
  27.  

执行结果:

  1. delphi@delphi-vm:~/shell/chapter03$ ./test.sh  
  2. 6/3 
  3. x = 6/3 
  4. x = 2 
  5. x = 0 
  6. ./test.sh: 行 13: 3.14: 语法错误: 无效的算术运算符 (错误符号是 ".14") 
  7. x = 0 
  8. x = 6/3 
  9. x = 2 
  10. x = 2 
  11. ./test.sh: 行 24: x: 只读变量 
  12. x = 2 
  13.  

变量和引号

  • 单引号

  • 双引号

  • 反引号

例如:

  1. #! /bin/bash 
  2. echo "The current directory is `pwd`" 

变量的作用域

  • 全局变量

  • 局部变量
    例子:

  1. #! /bin/bash 
  2.  
  3. func() 

  4. echo "$v1" 
  5. v1=200 

  6. v1=100 
  7. func 
  8. echo "$v1" 

执行结果:
100
200

注意: 函数内部定义的变量也是全局变量
全局变量和局部变量的区别:

  1. #! /bin/bash 
  2.  
  3. func() 

  4. echo "$v1" 
  5. lacal v1=200 
  6. echo "$v1" 

  7. v1=100 
  8. func 
  9. echo "$v1" 

执行结果:
100
200
100

  • 系统变量
    如下:
    enter description here

  • 环境变量
    运用命令:set | more 查看所有的环境变量,环境变量一般用大写表示

变量的赋值和清空

变量赋值

赋值号左右不能够接空格,否则shell会将其视为命令。

引用变量的值

建议使用大括号将变量名进行明确界定,不用简写。
例如:echo "${v4}abc"

清除变量

unset 变量 语句

引用和替换

引用

单引号为全引用,如:

  1. #! /bin/bash 
  2.  
  3. v1="hello" 
  4. echo 'world,$v1' 

输出: world,$v1

命令替换

有两种语法:
例如:

  1. #! /bin/bash 
  2.  
  3. v1='pwd' 
  4. echo 'The current directory is $v1' 
  1. #! /bin/bash 
  2.  
  3. v1=$(pwd
  4. echo 'The current directory is $v1' 

转义

如:echo $SHELL
结果:$SHELL

原文地址:https://www.cnblogs.com/yanyun888/p/6204199.html