【Shell】03_Shell变量
一、环境变量
Linux系统配置文件(全局配置文件和用户个人配置文件)中定义的变量,提供给所有Shell程序使用
1.1、全局环境变量
1.1.1、配置文件位置
/etc/environment
/etc/bashrc(或者/etc/bash.bashrc)
/etc/profile(或者/etc/bash_profile)
/etc/profile.d/xxx.sh
1.1.2、常用全局环境变量
变量名称 | 含义 |
---|---|
PATH | 类似于Windows的Path环境变量 |
HOME | 当前用户家目录 |
SHELL | 查看当前SHELL解析器 |
HISTFILE | 查看history命令 存储目录 |
LANG | 查看当前系统语言 |
1.2、用户环境变量
1.2.1、配置文件位置
~/.bashrc
/.profile(部分系统为:/.bash_profile)
1.3、查看环境变量
env 查看系统环境变量
set 查看系统环境变量 + 自定义变量 + 函数
还有终端一次性配置,参考博文 https://blog.csdn.net/Holenxr/article/details/137219507
二、自定义变量
2.1、自定义局部变量
定义在一个脚本文件中的变量,只能在这个脚本文件中使用的变量
#!/bin/bash
var_name=value
2.2、自定义常量
变量设置值后不可以修改的变量,也叫只读常量
#!/bin/bash
var_name=value
readonly var_name
2.3、自定义全局变量
在当前脚本文件中定义,在当前Shell环境和子Shell环境中都可以使用的变量
2.3.1、父子Shell环境介绍
有两个Shell脚本1.sh和2.sh,如果在1.sh中执行了2.sh,那么1.sh就是父Shell环境,2.sh就是子Shell环境。
2.3.2、语法及示例
#!/bin/bash
#语法1:
var_name=value
export var_name
#语法2:
export var_name=value
实例:在A.sh中定义一个变量VAR,B.sh中打印VAR,在A.sh中执行B.sh。
A.sh
#!/bin/bash
export VAR=123
sh B.sh
B.sh
#!/bin/bash
echo $VAR
2.4、自定义变量的使用
#!/bin/bash
var_name=value
#使用变量
#用法1:
echo $var_name
#用法2:
echo ${var_name}
#区别:花括号方式适合拼接字符串
#删除变量
unset var_name
三、特殊变量
3.1、特殊变量:$n
用于获取脚本文件执行时传入的参数
$0 用于获取当前脚本文件名
$1~$9 用于获取第1个到第9个输入参数
${数字} 用于获取第10个以上输入参数
3.2、特殊变量:$#
用于获取脚本文件执行时参数的个数
3.3、特殊变量:$* 和 $@
获取所有输入参数
#!/bin/bash
#直接打印时,两个变量是没有区别的,与单双引号无关,都是"$1 $2 ... $n"
echo "$@"
echo $@
echo "$*"
echo $*
#!/bin/bash
#循环当中,有双引号是有区别的
for item in "$@"
do
echo $item
done
for item in "$*"
do
echo $item
done
#!/bin/bash
#循环当中,没有双引号是没有区别的
for item in $@
do
echo $item
done
for item in $*
do
echo $item
done
3.4、特殊变量:$?
用于获取上一个Shell命令的退出状态码,或者是函数返回值
一般0代表执行成功,非0代表执行失败
3.5、特殊变量:$$
获取当前Shell脚本的进程号