shell编程02【基本语法-变量】

举报
波波烤鸭 发表于 2022/03/30 01:48:24 2022/03/30
【摘要】 shell变量 1.系统变量   常用的系统变量 序号命令1$HOME查看当前用户的根目录2$PWD查看当前路径,等价于pwd3$SHELL查看系统shell的解释器类型4$USER当前登录用户… ...

shell变量

1.系统变量

  常用的系统变量

序号 命令
1 $HOME 查看当前用户的根目录
2 $PWD 查看当前路径,等价于pwd
3 $SHELL 查看系统shell的解释器类型
4 $USER 当前登录用户

env:显示用户的环境变量

在这里插入图片描述

2.自定义变量

2.1定义规则

变量名称=值

  
 
  • 1

注意:

  1. 等号两侧不能有空格
  2. 变量名称一般习惯大写

2.2变量使用

普通使用

[root@hadoop-node01 ~]# address=深圳
[root@hadoop-node01 ~]# echo $address
深圳

  
 
  • 1
  • 2
  • 3

单引号使用

[root@hadoop-node01 ~]# username1='波波烤鸭'
[root@hadoop-node01 ~]# echo $username1
波波烤鸭

  
 
  • 1
  • 2
  • 3
# 单引号有脱意的作用
[root@hadoop-node01 ~]# username2='波波烤鸭$address'
[root@hadoop-node01 ~]# echo $username2
波波烤鸭$address

  
 
  • 1
  • 2
  • 3
  • 4

双引号的使用

[root@hadoop-node01 ~]# username2="波波烤鸭$address"
[root@hadoop-node01 ~]# echo $username2
波波烤鸭深圳

  
 
  • 1
  • 2
  • 3

双引号中对变量的引用会起作用。

变量的累加
":"通过冒号累加

在这里插入图片描述

取消变量 unset

[root@hadoop-node01 ~]# echo $username2
波波烤鸭深圳
[root@hadoop-node01 ~]# unset username2
[root@hadoop-node01 ~]# echo $username2


  
 
  • 1
  • 2
  • 3
  • 4
  • 5

提示全局变量export
export 可以将局部变量提升为全局变量
创建一个s1.sh脚本文件,内容如下:

#!/bin/bash
stu1=bobo1
export stu2=bobo2

  
 
  • 1
  • 2
  • 3

执行脚本并查看变量

[root@hadoop-node01 ~]# source s1.sh 

  
 
  • 1

在这里插入图片描述

2.3返回值赋值

反引号的使用
反引号,运行里面的命令,并把结果返回给变量P1

[root@hadoop-node01 ~]# ls
apps  s1.sh  shellScript  zookeeper.out
[root@hadoop-node01 ~]# P1=`ls`
[root@hadoop-node01 ~]# echo $P1
apps s1.sh shellScript zookeeper.out

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

$() 等价于反引号

[root@hadoop-node01 ~]# P2=$(ls)
[root@hadoop-node01 ~]# echo $P2
apps s1.sh shellScript zookeeper.out

  
 
  • 1
  • 2
  • 3

3.特殊变量

特殊变量 说明
$? 表示上一个命令的退出状态,0成功,大于1表示失败
$$ 表示当前进程编号
$0 表示当前脚本名称
$n 表示n位置的输入参数(n代表数字,n>=1)
$# 表示参数的个数,常用于循环
$*和$@ 都表示参数列表 【在包含""的情况下 $*把循环数据当做一条参数处理了】

$?

在这里插入图片描述
$$
当前进程编号
在这里插入图片描述

$0
当前脚本名称

在这里插入图片描述

[root@hadoop-node01 ~]# ./s1.sh 
当前执行的脚本名称是:./s1.sh

  
 
  • 1
  • 2

$n
表示n位置的输入参数(n代表数字,n>=1)

在这里插入图片描述

[root@hadoop-node01 ~]# ./s1.sh a1 a2 a3 a4 a5
当前执行的脚本名称是:./s1.sh
第一个参数a1
第二个参数a2
第三个参数a3

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

$#
表示参数的个数,常用于循环

在这里插入图片描述

当前执行的脚本名称是:./s1.sh
第一个参数
第二个参数
第三个参数
参数总的个数:0
[root@hadoop-node01 ~]# ./s1.sh b1 b2 b3 b4 b5
当前执行的脚本名称是:./s1.sh
第一个参数b1
第二个参数b2
第三个参数b3
参数总的个数:5

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

$*和$@
都表示参数列表 【在包含""的情况下 $*把循环数据当做一条参数处理了】
正常使用
在这里插入图片描述

在这里插入图片描述

双引号包裹$*和$@使用

在这里插入图片描述

在这里插入图片描述

文章来源: dpb-bobokaoya-sm.blog.csdn.net,作者:波波烤鸭,版权归原作者所有,如需转载,请联系作者。

原文链接:dpb-bobokaoya-sm.blog.csdn.net/article/details/88920621

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。