自定义变量

自己定义的变量

自定义变量分类:

  • 自定义局部变量

    • 只能在一个脚本文件中使用的变量

      定义使用:

      不能以数字开头

      var_name=value
      

      等号两侧不能有空格

      bash中默认的类型为字符串类型,无法直接数值运算

      变量值有空格,必须使用双引号

      不能使用关键字

  • 自定义常亮

  • 自定义全局变量

查询变量值

1.$变量名
2.${变量名}  #适合拼接字符串

变量的删除

unset 变量名

自定义常量(只读变量)

语法

readonly 变量名

​ 父子shell环境

两个脚本文件;A.sh和B.sh;

在A的脚本中执行了B脚本文件,那么A就是父shell环境,B就是子shell环境

自定义全局变量 就是在当前脚本文件中定义的全局变量,也可以在shell子环境中使用

自定义全局变量

export var_name1 var_name2     #可以设置多个全局变量

测试全局变量在子shell中是否可以使用,

创建两个脚本文件;demo1.sh demo2.sh

编辑两个脚本文件;

在demo1中创建全局变量;在demo2 中打印全局变量;执行父shell

demo1.sh

#!/bin/bash
export var1=13
bash demo2.sh

demo2.sh
#!/bin/bash
echo $var1



特殊符号变量

常用的特殊变量

$n
$n
用于接收脚本文件执行时传入的参数;
$0,用于获取当前脚本文件名称;
$1-$9代表获取第一个参数到第9个参数
10个参数以上的格式
${数字},否者无法获取;

执行脚本文件传入参数语法

sh 脚本文件 参数1 参数2 ...

案例

打印脚本文件名字,和后面的输入参数;

#!/bin/bash
echo $0
echo $1
echo ${10}

$#

获取所有输入参数的个数;

$#
echo $#

$*

$@

上述两者的区别;

都是获取所有的输入参数,用于以后输出所有参数;(没有$0)

  • 不使用双引号括起来,功能一样 ;

格式为$1 $2 ...

  • 使用双引号括起来

​ "$*"获取的参数拼接成一个字符串"$1 $2 ..."

​ "$@"获取一组参数列表对象,:"$1" "$2" ..;;

使用循环打印看出区别

for var in 变量列表
do 
命令
done
##结束循环
#!/bin/bash
echo "循环遍历所有参数@"
for var in "$@"
do 
        echo $var
done

echo "循环遍历所有参*"
echo "循环遍历所有参数*"
for var in "$*"
do 
        echo $var
done

e

$?

用于获取上一个shell命令的退出状态码,或者是函数的返回值

每一个shell命令都有一个返回值;

用于说明命令是否执行成功;

一般返回值为0代表成功;非0 代表失败

$$

用于获取当前shell进程的ID号

$$