小言_互联网的博客

快速入门Shell脚本(2)——系统变量与自定义变量

491人阅读  评论(0)

1. shell脚本变量介绍

变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则。

2. shell系统变量

$ HOME、$ PWD、$ SHELL、$USER等

2.1 实际操作

[root@node01 shell]# echo $HOME
/root
[root@node01 shell]# echo $PWD
/opt/shell
[root@node01 shell]# echo $SHELL
/bin/bash
[root@node01 shell]# echo $USER
root

2.2 SET 查看系统中的所有变量

3. 自定义变量

3.1 基本语法

  • 定义语法:变量=值
  • 撤销变量:unset 变量
  • 声明静态变量:readonly,注意,不能unset

3.2 变量定义规则

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

3.3 实例操作

(1)定义变量A

[root@node01 ~]# A=10
[root@node01 ~]# echo $A
10

(2)给变量A重新赋值

[root@node01 ~]# A=2000
[root@node01 ~]# echo $A
2000

(3)撤销变量A

[root@node01 ~]# echo $A
2000
[root@node01 ~]# unset A
[root@node01 ~]# echo $A

(4)声明静态的变量C=20 不能unset

[root@node01 ~]# readonly  C=20
[root@node01 ~]# echo $C
20
[root@node01 ~]# C=20
-bash: C: readonly variable
[root@node01 ~]# unset C
-bash: unset: C: cannot unset: readonly variable
[root@node01 ~]# echo $C
20

(5)在base中,变量默认类型都是字符串类型,无法直接俄进行数值运算

[root@node01 ~]# D=1+2
[root@node01 ~]# echo $D
1+2

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

[root@node01 shell]# str=hello bash
[root@node01 shell]# echo $str 
hello
[root@node01 shell]# str='hello bash' 
[root@node01 shell]# echo $str        
hello bas

(7)可把变量提升为全局环境变量,可提供其他shell程序使用
export 变量名

[root@node01 shell]# vim helloword.sh
#!/bin/bash
echo "hello word"
echo $B
-- 不给B进行赋值会输出为空
[root@node01 shell]# sh helloword.sh 
hello word

-- 给B进行赋值在执行脚本
[root@node01 shell]# export B=10
[root@node01 shell]# sh helloword.sh
hello word
10

4.特殊变量:$n

4.1 基本语法

$ n(功能描述:n为数字, 0 0代表脚本的名称, 1-$ 9代表一到九个参数,十以上的参数,十以上的参数需要使用大括号包含,如$ {10})

4.2 实例实操

输出改脚本名称,输出参数1和输入参数2的值

[root@node01 shell]# vim parmeter.sh
#!/bin/bash
echo "$0 $1 $2"
[root@node01 shell]# sh parmeter.sh  aa bb
parmeter.sh aa bb

5特殊变量:$#

5.1基本语法

$#(功能描述:获取所有输入参数个数,常用于循环)。

5.2实例实操

获取输入参数的个数

[root@node01 shell]# vim parmeter.sh 
#!/bin/bash
echo "$0 $1 $2"
echo $#
[root@node01 shell]# sh parmeter.sh  aa bb cc
parmeter.sh aa bb
3

6.特殊变量:$ *、$ @

1.基本语法

$ *(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看出一个整体)
$ @(功能描述:这个变量也代表命令行中所有的参数不$@把每个参数分成对待)

2.实际操作

打印输出所有参数

[root@node01 shell]# vim parmeter.sh 
#!/bin/bash
echo "$0 $1 $2"
echo $#
echo $*
echo $@

[root@node01 shell]# vim parmeter.sh 
[root@node01 shell]# sh parmeter.sh  1 2 3
parmeter.sh 1 2
3
1 2 3
1 2 3

7.特殊变量:$?

7.1.基本语法

$?(功能描述:最后一次执行的命令的返回的状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),证明名上一个命令执行不正确。)

7.2.实际操作

判断sh脚本是否执行正确执行

[root@node01 shell]# sh helloword.sh 
hello word
[root@node01 shell]# echo $?
0

转载:https://blog.csdn.net/qq_43791724/article/details/107598398
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场