Shell变量详解

P6 Shell变量详解

变量是什么

f0d9677d88644de4869df048759f8163.png

shell变量规则

9153b15e1b254093bb224902c1113a18.png

shell作用域

bca119e5d789492fb8b9078be2e45b37.png

本地变量

变量只针对当前的shell进程,切换shell会导致变量不可见。sh、bash进入子shell,exit退出当前shell。

[root@localhost ~]# name="我是父shell"
[root@localhost ~]# echo $name
我是父shell
[root@localhost ~]# sh
sh-4.2# pstree
systemd─┬─
        ├─sshd───sshd─┬─bash───sh───pstree
        │             ├─bash───top
        │             └─bash───sleep
sh-4.2# echo $name
单引号不会替换字符串里面的特殊字符,比如读取变量命令等;双引号会替换。

 pstree检查当前的进程树

d52e0b685d224253ab82ceed38fe696d.png

环境变量、局部变量、位置参数变量、特殊变量、自定义变量

795fab3a490f4607951de76ff65706b5.png

 

 $?上一次命令执行是否成功 

 P7 父子shell

单双引号、反引号区别

单引号不会替换字符串里面的特殊字符,双引号会。反引号执行执行命令。

[root@localhost ~]# name=fang
[root@localhost ~]# name2='$name'
[root@localhost ~]# echo $name2
$name
[root@localhost ~]# name3="$name"
[root@localhost ~]# echo $name3
fang

9660274bc49840229746e7a52ee5ee3d.png

 

不同执行方式对应的是否开启子shell

.  /cars. sh 和source不开启子进程

 ./cars.sh 和bash执行开启子进程

2f071c7a47ff44b09c3446b1d8085d2f.png

P8 环境变量

 检查环境变量的命令、变量配置文件

7333e5eb2cf041fc886514b124802cc4.png

 set 输出所有全局变量和当前shell的本地变量、局部变量

057be329c28342d790968171b06157cb.png

 

 多命令执行

分号分隔 

717e0b5659714538af54d3a33cceb6bd.png

环境变量加载顺序

014c9af64133406eaf733f86bfe5828f.png

 

P10 特殊变量

位置参数变量

acc078dd79654bf48bea458373454b67.png

 

[root@localhost opt]# bash hello.sh  arg1 arg2 arg3
$1: arg1 $2: arg2
$0: hello.sh
$#:3
$@: arg1 arg2 arg3
$*: arg1 arg2 arg3

ffea7a6b26d24b1c846da09797dfe907.png

 

 

状态变量

  1. $? 上次命令执行的返回值。 0是运行成功,非0失败
  2. $$ 执行脚本的当前shell的PID
  3. $!上一次后台进程的PID。 首先要启动一个后台进程 nohup命令可以启动后台进程
  4.  $_ 返回上次命令的最后一个位置参数

 

特殊参数参照方式 man bash 搜索 Special Param

(1)exit 119 返回时此脚本返回119码 

295324b98f8f45e69f7bd16fbac9f25b.png 

(2)nohup 命令 命令参数 & 后台运行参数,shell关闭也不停止。如果相关掉,可以ps aux | grep nohup  然后找到pid kill -9 强制关闭。

nohup 命令 命令参数 & 1>/dev/null 后台不关闭终端运行命令且将nohup的输出定向到垃圾桶。  nohup命令会生成 nohup.out文件

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fang·up·ad

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值