「Linux」 运维核心技能:Shell语法基础

①变量设置规则

1>变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。

2>在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。

3>变量用等号连接值,等号左右两侧不能有空格。

4>变量的值如果有空格,需要使用单引号或双引号包括。

5>在变量的值中,可以使用“ \\”转义符。

6>如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“$变量名”或用${变量名}包含。

7>如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。

8>环境变量名建议大写,便于区分。


②变量的分配

用户自定义变量

环境变量: 这种变量中主要保存的是和系统操作环境相关的数据。 系统的不能修改名字,只能更改值,可以增加,不可以删除系统

位置参数变量(是预定义变量的一种):这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。 变量数不能增删,名字不能更改,只可以修改已有变量的值

预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的


1、用户自定义变量(本地变量)

只在当前Shell中生效

①变量定义

[root@localhost ~]# name="shen chao"


②变量叠加

[root@localhost ~]# aa=123

[root@localhost ~]# echo $aa

123

[root@localhost ~]# aa="$aa"456

[root@localhost ~]# echo $aa

123456

[root@localhost ~]# aa=${aa}789

[root@localhost ~]# echo $aa

123456789


③变量调用

[root@localhost ~]# echo $name

$变量名

&{变量名}


④变量查看

[root@localhost ~]# set

#查看系统当中所有变量


⑤变量删除

[root@localhost ~]# unset name


2、环境变量

①环境变量是什么

用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效

②设置环境变量

[root@localhost ~]# export 变量名=变量值

[root@localhost ~]# env

#查询变量

[root@localhost ~]# unset 变量名

#删除变量

③系统常见环境变量

PATH:系统查找命令的路径

[root@localhost ~]# echo $PATH

/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:

/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost ~]# PATH="$PATH":/root/sh

#PATH变量叠加


PS1:定义系统提示符的变量

\\d:显示日期,格式为“星期 月 日”

\\h:显示简写主机名。如默认主机名“ localhost”

\\t:显示24小时制时间,格式为“ HH:MM:SS”

\\T:显示12小时制时间,格式为“ HH:MM:SS”

\\A:显示24小时制时间,格式为“ HH:MM”

\\\\u:显示当前用户名

\\w:显示当前所在目录的完整名称

\\W:显示当前所在目录的最后一个目录

\\#:执行的第几个命令

\\$:提示符。如果是root用户会显示提示符为“ #”,如果是普通用户

会显示提示符为“ $”

See Also 5、环境变量配置文件


3、位置参数变量

位置参数变量

作用

$n

n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}

$*

这个变量代表命令行中所有的参数, $*把所有的参数看成一个整体

$@

这个变量也代表命令行中所有的参数, 不过$@把每个参数区分对待

@#

这个变量代表命令行中所有参数的个数


4、预定义变量

预定义变量

作用

$?

最后一次执行的命令的返回状态。如果这个变量的值位0,证明上一个命令正确执行;如果这个变量的值位非0(具体数值,由命令自己定义),则证明上一个命令执行不正确

$$

当前进程的进程号(PID)

$!

后台运行的最后一个进程的进程号(PID)


5、接受键盘参数

[root@localhost ~]# read [选项] [变量名]

选项:

-p "提示信息" 在等待read输入时,输出提示信息

-t 秒数 read命令会一直等待用户输入,使用此选项可以指定等待时间

-n 字符数 read命令只接受指定的字符数,就会执行

-s 隐藏输入的数据,适用于机密信息的输入


6、数值运算与运算符

一:数值运算

[root@localhost ~]# declare [+/-][选项] 变量名

选项:

- 给变量设定类型属性

+ 取消变量的类型属性

-i 将变量声明为整数型(integer)


方法①:修改变量类型

[root@localhost ~]# aa=11

[root@localhost ~]# bb=22

#给变量aa和bb赋值

[root@localhost ~]# declare -i cc=$aa+$bb


方法②: expr或let数值运算工具

[root@localhost ~]# aa=11

[root@localhost ~]# bb=22

#给变量aa和变量bb赋值

[root@localhost ~]# dd=$(expr $aa + $bb)

#dd的值是aa和bb的和。注意“ +”号左右两侧必须有空格


方法③: “ $((运算式))”或“ $[运算式]”

[root@localhost ~]# aa=11

[root@localhost ~]# bb=22

[root@localhost ~]# ff=$(( $aa+$bb ))

[root@localhost ~]# gg=$[ $aa+$bb ]


二:运算符

「Linux」 运维核心技能:Shell语法基础


7、变量测试与内容替换

「Linux」 运维核心技能:Shell语法基础


分享到:


相關文章: