shell脚本变量

shell脚本变量

  • 1.变量概述
    • 1.1变量类型
    • 1.2变量的命令要求
    • 1.3 变量作用范围
    • 1.4几个符号作用
  • 2.局部变量
  • 3.环境变量
    • 3.1系统内置环境变量
  • 4. 只读变量
  • 5.位置变量
  • 6.预定义变量
  • 7.四个配置文件作用

1.变量概述

  • 变量即在程序运行过程中它的值是允许改变的量
  • 变量是用一串固定的字符串去表示不固定的内容
  • 变量表示命令的内存空间,将数据放在内存空间中,通过变量名引用,获取数据

变量作用:
用来存放系统和用户需要使用的特定参数

  • 变量名:使用固定的名称,由系统预设或定义用户
  • 变量值:能够根据用户设置,系统环境的变化而变化

1.1变量类型

变量赋值:变量名=变量值
bash变量类型:
1.根据变量的生效范围可分为:

  • 环境变量:全局生效,在任何bash环境中都可以识别

  • 局部变量;生效范围为当前shell进程,对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效

  • 本地变量:生效范围为当前shell进程中某代码片段,通常指函数,只能在定义他们的函数、脚本内部使用
    2.根据是否由系统定义可分为:

  • 内置变量:由系统维护,用于设置工作环境

  • 自定义变量:由用户自己定义,修改和使用
    3.特殊变量:

  • 环境变量:全局生效,在任何bash环境中都可以识别

  • 只读变量:只可以读取不可以更改

  • 位置变量;通过命令行给脚本传递参数。

  • 预定义变量;用来保持脚步程序的执行信息

    -   $0:当前脚本名称
    -   $?:查看上一次命令的执行状态,返回0为正常,非0为错误
    - $*:返回所有参数,当整体返回
    - $@:返回所有参数,当个体返回
    - $#:获取当前shell命令行中参数的总个数
    - $$;获取当前进程的pid
    

1.2变量的命令要求

  • 区分大小写
  • 不使用程序中的保留子和内置变量名称:如:if ,for,hostename
  • 只能使用数字,字母及下划线,且不能以数字开头,注意:不支持短横线“-”,和主机名相反
  • 使用英文时,尽量使用词义通俗易懂

1.3 变量作用范围

默认情况下,新定义的变量只在当前隔的shell环境中有效,因此称为局部变量,当进入子程序或新的shell环境中,局部变量将无法再起作用

可以通过内部命令export将指定的变量为全局变量,使用户定义的变量在所有子shell环境中可以继续使用
1.法一,设置全局变量:
export name=value
或 declare -x name=value

2.法二,将局部变量转变为全局变量:export name
shell脚本变量_第1张图片

1.4几个符号作用

双引号" ":会把引号的内容当成整体来看待。强引用,识别变量,允许通过$符号引用其他变量值。

单引号’ ':会把引号的内容当成整体来看待。弱引用,禁止引用其他变量值,单引号内的内容都会被认为是普通字符。

反撇号 和 $() :调用命令执行后输出的结果。如果存在嵌套,不能使用反撇号。

花括号{ } :定义变量范围。 echo c o l o r {color} color{price}
在这里插入图片描述

在这里插入图片描述
shell脚本变量_第2张图片

2.局部变量

定义变量:变量名=变量值

引用变量; 变量名 = 变量名= 变量名={变量名}
查看变量:

  • echo $变量名:查看单个变量
  • set:产看所有变量,包括局部变量和环境变量

取消变量:unset 变量名

作用范围;仅在当前shell环境中有效,无法在子shell环境中使用

3.环境变量

3.1系统内置环境变量

1.由系统提前创建,用来设置用户的工作环境
2.使用env命令查看所有环境变量
3.需要记住的常用环境变量;

  • $PATH 表示可执行文件的默认路径
  • $USER 表示用户名称
  • $HOME 表示用户的宿主目录
  • $LANG 表示语言和字符集
  • $PWD 表示当前所在工作目录
    4.环境变量的特性
  • 可以使子进程继承父进程的变量,但是无法让父进程使用子进程的变量
  • 一旦子进程修改层父进程继承的变量,将会新的值传递给孙子进程
  • 一般只在系统配置文件中使用,在脚本中较少使用

4. 只读变量

1.我们在定义shell变量时,默认定义的变量是可以修改的,但有一种变量是不能修改的,就是只读变量
2.只读变量只能被赋值一次。只读变量在取得初始值之后,只能进行读取操作,不能重新赋值或删除

5.位置变量

位置变量也称为位置参数
使用$n表示,n为数字序号,且必须为整数

[root@localhost ~]# cat weizhi.sh
#!/bin/bash
echo “$1” #显示位置1的参数
echo “$2” #显示位置2的参数
echo “$3” #显示位置3的参数

[root@localhost ~]# bash weizhi.sh aaa bbb ccc
aaa //对应$1
bbb //对应$2
ccc //对应$3

shell脚本变量_第3张图片
shell脚本变量_第4张图片

6.预定义变量

预定义变量是系统定义好的变量,用来保持脚本程序的执行信息。

可以直接使用这些变量,不能直接为这些变量赋值。

shell脚本变量_第5张图片

$* 和 $@的区别:

  • 不加双引号的话,$* 和 $@ 都代表脚本后面跟的所有参数。
  • 加上双引号的话," ∗ " 会把所有参数当作一个整体去看待(此时参数数量为 1 ), " *"会把所有参数当作一个整体去看待(此时参数数量为1)," "会把所有参数当作一个整体去看待(此时参数数量为1),"@"会把脚本后面跟的每一个参数当作一个个体去看待。

7.四个配置文件作用

1、/etc/profile 文件
系统级的配置文件,开机时系统自动加载该文件中的配置。
系统每次启动都会自动执行/etc/profile 文件里的命令,这个文件是对全局有效的(所有的shell环境和用户)。

2、~/.bash_ profile 文件
不同用户登录系统时,会自动执行自己家目录中的~/ .bash_ profile 文件中的命令,之后自动执行~/ . bashrc。(因为~/ .bash_ profile文件中规定了,如果~/ . bashrc是个文件,则执行该文件)。

3、~/.bashrc 文件
当前用户每切换一个shell环境都会自动加载~/ . bashrc 文件中的配置 ,之后自动执行/etc/bashrc文件。(因为~/ . bashrc文件中规定了,如果/etc/bashrc是个文件,则执行该文件)。

4、/etc/bashrc 文件
/etc/bashrc针对所有用户,用户每切换一个shell环境都会自动执行。

5、/etc/skel/ 目录
/etc/skel/是用来存放新用户配置文件的目录,当我们添加新用户的时候,这个目录下的所有文件会自动被复制到新添加的用户的家目录下。这个目录下的所有文件都是隐藏文件(以.开头的文件)。
该目录中包括 .bash_logout 、.bash_profile 、.bashrc 这三个配置文件。

你可能感兴趣的:(chrome,前端)