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为数字, 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
查看评论