shell脚本编写(shell变量)day04

一、什么是变量

        1、以固定名称存储的可能会发生变化的值;

        2、能够根据需求提高脚本的环境变化适应能力;

        3、在脚本执行中多次被使用。

二、变量的定义与赋值

        格式:变量名=变量值

        注意:若变量名已存在,则相当于重新赋值

                    等号两边不能有空格

                    变量名称由字母/下划线/数字组成,区分大小写

                     变量名不能永数字开头,不能由保留字和特殊字符

[root@localhost ~]# x=123
[root@localhost ~]# var1=你好
[root@localhost ~]# 

三、查看/引用变量

        格式:

                1、引用变量: $变量名

                2、查看变量值: echo $变量名 、 echo ${变量名}

                3、未定义的变量,当执行查看变量命令时,无变量值回显

[root@localhost ~]# echo $x
123
[root@localhost ~]# echo $var1
你好
[root@localhost ~]# echo ${var1},世界!
你好,世界!

四、取消变量

        退出定义变量的shell环境时,变量会自动失效

        在环境内手动取消: unset 变量名1 变量名2 变量名3

[root@localhost ~]# unset x
[root@localhost ~]# echo $x

[root@localhost ~]# 

五、变量的类型

        1、按存储类型分类:整数型、浮点型、双精度浮点型、字符型

                shell不作为高级编程语言,对存储类型的要求比较松散

        2、按照使用类型分类

类型    说明
环境变量变量名通常未大写,由系统维护,用来设置工作环境,其中只有个别变量用户可以直接更改
位置变量由bash内置,用来存储在执行脚本时提供的命令行参数
预定义变量由bash内置,一类由特殊用途的变量,可以直接调用,但不能直接复制或者是修改
自定义变量由用户自行设置,直接修改使用

六、环境变量

        配置文件:/etc/profile  、 ~/.bash_profile(只对当前用户生效)

        相关操作:env :列出所有的环境变量

                          set :列出所有变量

       常见环境变量:PWD、PATH、USER、LOGNAME、UID、SHELL、HOME、PS1、PS2

[root@localhost ~]# echo $USER
root
[root@localhost ~]# echo $UID
0
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]#

        

七、位置变量

        在执行脚本时提供的命令行参数

         表示: $n ,n为序号,n不能=0

        $1 、$2 \ ...... \ ${10}

//test脚本内容
[root@localhost ~]# cat test.sh 
#!/bin/bash

systemctl $1 firewalld



//使用test脚本查看防火墙状态
[root@localhost ~]# ./test.sh status
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2024-06-14 16:06:58 EDT; 1min 16s ago
     Docs: man:firewalld(1)
 Main PID: 3047 (firewalld)
    Tasks: 2 (limit: 4904)
   Memory: 24.4M
   CGroup: /system.slice/firewalld.service
           └─3047 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

Jun 14 16:06:57 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Jun 14 16:06:58 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
Jun 14 16:06:58 localhost.localdomain firewalld[3047]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be remove>
lines 1-13/13 (END)

八、预定义变量

·        用来保存脚本程序的执行信息

                        不能直接使用这些变量、不能直接为这些变量赋值

变量名     解释
$0当前所在的进程或者是脚本名
$$当前进程的PID编号
$?命令执行后的返回状态码,0便是正常,不为0表示异常
$#已加载的位置变量个数
$*所有位置变量的值

九、自定义变量

        脚本编写人员自行定义的变量值,遵循变量定义与赋值规则即可。

        

十、练习

        1、编写创建用户的通用脚本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值