首页 > 技术文章 > shell变量相关知识

gexiaoshan 2018-10-24 20:39 原文

环境变量和普通变量

一、几个常用命令:

  1. set : 输出所有变量,包含全局变量和局部变量

  2. env : 只显示全局变量

  3. declare : 输出所有的变量,函数,整数和已经导出的变量

  4. unset : 消除本地变量和环境变量

  5. source /etc/profile : 加载环境变量,使环境变量生效

二、普通变量定义赋值有三种方式:

  1. 变量名=value : 不加引号,值里有变量会被解析后再输

  2. 变量名='value' : 单引号,纯字符串显示

  3. 变量名="value" : 双引号,引号里的变量及命令会解析后输出

三、变量名=$(命令) 

  把一个命令的结果作为变量的内容赋值,或者用反引号引起来(即tab键上面那个键输出的字符

  如:CMD=$(date +%F) :将当前日期(格式化为2018-10-24)赋值给变量CMD

[root@hxjk_test_backend_services config]# CMD=$(date +%F)
[root@hxjk_test_backend_services config]# echo $CMD
2018-10-25
[root@hxjk_test_backend_services config]# 

四、$变量, ${变量}

  输出变量值

五、shell中特殊位置参数变量

[root@hxjk_test_backend_services test]# cat aa.sh
echo "shell file name: $0"
echo "first param: $1"
echo "params number:$#"
echo "all param:$*" 
echo "all param2: $@"
[root@hxjk_test_backend_services test]# sh aa.sh a b c
shell file name: aa.sh
first param: a
params number:3
all param:a b c
all param2: a b c
[root@hxjk_test_backend_services test]# 

六、shell进程中的特殊状态变量

  1. $? : 获取执行上一个的执行状态返回值(0为成功,非0为不成功)

  2. $$ : 获取当前执行的shell脚步的进程号

  3. $! : 获取上一个再后台工作的进程的进程号

  4. $_ : 获取在此之前执行的命令或脚步的最后一个参数

[root@hxjk_test_backend_services test]# ll
total 8
-rw-r--r--. 1 root root 119 Oct 24 20:21 aa.sh
-rw-r--r--. 1 root root   8 Oct 25 17:30 bb.sh
-rw-r--r--. 1 root root   0 Oct 24 14:49 cc.sh
[root@hxjk_test_backend_services test]# echo $?
0
[root@hxjk_test_backend_services test]# lll
-bash: lll: command not found
[root@hxjk_test_backend_services test]# echo $?
127
[root@hxjk_test_backend_services test]# 

 

推荐阅读