Linux扩展篇之Shell编程二(变量)

变量

1. 系统预定义变量

常用系统变量:$HOME、$PWD、$SHELL、$USER 等
查看当前用户主目录

  • 方法1

[root@hadoop100 ~]# echo $HOME

  • 方法2

[root@hadoop100 ~]# printenv HOME

显示当前Shell中所有的变量

[root@hadoop100 ~]# set

查看当前所有全局环境变量

  • 方法1:

[root@hadoop100 ~]# env

  • 方法2:

[root@hadoop100 ~]# printenv

2. 自定义变量

2.1 基本语法

  1. 定义变量:变量名=变量值,注意(=号前后不能有空格)`
  2. 撤销变量:unset 变量名
  3. 声明静态变量:readonly 变量,注意:不能 unset

2.2 变量定义规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写
  2. 等号两侧不能有空格
  3. 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
  4. 变量的值如果有空格,需要使用双引号或单引号括起来。

2.3 案例实操

  1. 定义变量 A

在这里插入图片描述

  1. 给变量 A 重新赋值

在这里插入图片描述

  1. 撤销变量 A

在这里插入图片描述

  1. 声明静态的变量 B=2,静态不能 unset 和修改

在这里插入图片描述

  1. 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算

在这里插入图片描述

  1. 变量的值如果有空格,需要使用双引号或单引号括起来

在这里插入图片描述

  1. 在 hello.sh 文件中增加 echo $B

#!/bin/bash
echo “hello world!”
echo $B

在这里插入图片描述
注意: 这时,我们执行 hello.sh 时,只输出了 hello world!,并未输出变量 B 的内容。原因是:变量B刚定义时是一个局部变量,而我们使用方式2(参考扩展篇第一章)执行 hello.sh。相当于当前 shell 中打开一个子 shell 来执行脚本内容,所以局部变量在子 shell 中无效。我们需要将其变成全局变量才可使用

  1. 使用 export 把 B 变量提升为全局环境变量,供其他 Shell 程序使用

在这里插入图片描述

3. 特殊变量

3.1 $n

基本语法:$n

n值功能描述
$0代表该脚本名称
$1-$9代表第一到第九个参数,十以 上的参数
${10}十以上的参数需要用大括号包含

案例实操

修改 hello.sh内容,如下所示:
#!/bin/bash
echo ‘==$n
echo “hello world!”
echo scpipt name: $0
echo 1st paramater: $1
echo 2nd paramater: $2

在这里插入图片描述

3.2 $#

基本语法:$#

  • 功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性。

案例实操

在 hello.sh脚本中添加下面内容:
echo paramater number:$#

在这里插入图片描述

3.3 $*、$@

基本语法

  • $ * :这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体)
  • $@ :这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待)

案例实操

在 hello.sh脚本中添加下面内容:
echo $*
echo $@

在这里插入图片描述
两者的区别


#!/bin/bash
echo '=============$*============'
for para in "$*"
do      
        echo $para
done
echo '=============$*============'
for para in "$@"
do
        echo $para
done
~     

在这里插入图片描述

3.4 $?

基本语法:$?
最后一次执行的命令的返回状态。

  • 如果这个变量的值为 0,证明上一 个命令正确执行;
  • 如果这个变量的值为非 0,则证明上一个命令执行不正确了。

案例实操

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值