shell脚本基础之变量

    科技2022-07-11  89

    变量

    1.什么是变量?

    变量即可以变化的量,变量可以保存下来,后面可以引用。

    2.变量名称注意事项

    只能包含字母、数字、下划线,并且不能以数字开头不应该跟系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要用“_”下划线开头最好做到见名知义不能使用程序中的保留字,例如if、for等

    3.变量类型

    字符型数值型: 整数、浮点型布尔型:true、false(首字母大写)

    4. 变量操作

    设置变量引用变量撤销变量 [root@ansible ~]# a=11 //设置变量 [root@ansible ~]# b=22 [root@ansible ~]# echo $a //$引用变量,echo打印出来 11

    单引号与双引号的区别

    [root@ansible ~]# xiaowang=1 [root@ansible ~]# echo "$xiaowang" //双引号取出里面的数值 1 [root@ansible ~]# echo '$xiaowang' //单引号取出所有 $xiaowang

    5. bash变量类型

    环境变量本地变量(局部变量),只在当前主机生效。位置变量特殊变量(bash内置的,用来保存某些特殊数据的变量,也称系统变量)

    5.1 本地变量

    VAR_NAME=VALUE //本地变量,作用域为当前shell进程。对当前shell外的其它shell进程,包括当前shell的父shell、子shell进程均无效 local VAR_NAME=VALUE //局部变量,作用域为当前代码段,常用于函数

    5.2 环境变量

    export VAR_NAME=VALUE //作用域为当前shell进程及其子进程

    5.3 位置变量

    $1,$2,$3,.... //用来引用脚本的参数 shift [num] //位置变量使用完以后退出,后面的参数向前推进 [root@ansible ~]# cat test.sh #!/bin/bash [root@ansible ~]# chmod +x test.sh //给一个可读权限 echo $1 $2 $3 $4 [root@ansible ~]# ./test.sh 5 6 7 8 5 6 7 8 根据位置的变换来取值 [root@ansible ~]# cat test.sh #!/bin/bash echo $1 $4 $3 $2 [root@ansible ~]# ./test.sh 5 6 7 8 5 8 7 6

    5.4 特殊变量

    $# //是传给脚本的参数个数 $0 //是脚本本身的名字 $! //是shell最后运行的后台Process的PID $@ //是传给脚本的所有参数的列表 $* //是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 $$ //是脚本运行的当前进程ID号 $? //是显示上条命令的退出状态,0表示没有错误,其他表示有错误 例如: [root@ansible ~]# cat test.sh #!/bin/bash echo $# [root@ansible ~]# ./test.sh 1 2 3 4 5 6 7 7 [root@ansible ~]# cat test.sh #!/bin/bash echo $0 [root@ansible ~]# ./test.sh 1 2 3 4 5 6 7 ./test.sh $@可以单独取某一个 [root@ansible ~]# cat test.sh #!/bin/bash echo $@ [root@ansible ~]# ./test.sh 1 2 3 4 5 6 7 1 2 3 4 5 6 7 $*代表取所有的 [root@ansible ~]# cat test.sh #!/bin/bash echo $* [root@ansible ~]# ./test.sh 1 2 3 4 5 6 7 1 2 3 4 5 6 7 [root@ansible ~]# cat test.sh #!/bin/bash echo $? [root@ansible ~]# ./test.sh 1 2 3 4 5 6 7 0

    5.5 bash内建环境变量

    PATH //命令查找的位置 SHELL //当前所用shell UID //当前用户的uid HISTSIZE //命令历史的长度 HOME //当前用户的家目录 PWD //当前的位置 HISTFILE //当前用户的历史命令存放的位置 PS1 //定义命令提示符的样式

    5.6 只读变量(常量)

    readonly VAR_NAME=VALUE //不能修改值,不能销毁,只能等shell进程终止时随之消亡 [root@ansible ~]# readonly lp=nihao [root@ansible ~]# lp=111 -bash: lp: readonly variable
    Processed: 0.039, SQL: 8