(四)bash中的运算符

8: Bash  的变量和运算符

1:Bash变量与其他编程语言的不同

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

(2)变量用等号连接值,等号左右两侧不能有空格。

(3)变量的值如果有空格,需要使用单引号或双引号包括。如:“test="hello world!"”。其中双引号括起来的内容“$”、“\”和反引号都拥有特殊含义,而单引号括起来的内容都是普通字符。 在变量的值中,可以使用“\”转义符。 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含"$变量名

"或用${变量名}包含变量名

 

2:变量的分类

  用户自定义变量:这种变量是最常见的变量,由用户自由定义变量名和变量的值。

  环境变量:这种变量中主要保存的是和系统操作环境相关的数据,比如当前登录用户,用户的家目录,命令的提示符等。环境变量的变量名可以自由定义,但是一般对系统起作用的环境变量的变量名是系统预先设定好的。

  位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。

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

 

(1)自定义变量

用户自定义变量:#等号左右两侧不能有空格

[root@localhost ~]# name=123

echo $name

变量的增删改查:

增加 :name=123,

改:name=567直接覆盖,

删除:unset name 删除变量,可以理解为释放变量的内存空间

查询:查看变量是否已经定义,或者系统定义了多少变量。

 

set 命令[选项]

选项:

-u:  如果设定此选项,调用未声明变量时会报错(默认无任何提示)

-x: 如果设定此选项,在命令执行之前,会把命令先输出一次

 

(2)系统环境变量

1:环境变量设置

export age="18"

 

2: 环境变量查询和删除

env 命令和 set 命令的区别是,set 命令可以查看所有变量,而 env 命令只能查看环境变量。

[root@localhost ~]# unset gender

[root@localhost ~]# env | grep gender

 

3:系统默认环境变量

HOSTNAME=localhost.localdomain 主机名

SHELL=/bin/bash 当前的 shell 

TERM=linux  终端环境

HISTSIZE=1000   历史命令条数

SSH_CLIENT=192.168.4.159 4824 22  当前操作环境是用 ssh 连接的,这里记录客户端 ip

SSH_TTY=/dev/pts/1

例如:PATH="$PATH":/root/sh 修改系统bin执行路径添加sh

 

4: LANG 语系变量

LANG 变量定义了 Linux 系统的主语系环境,这个变量的默认值是:

[root@localhost src]# echo $LANG

 

(3)位置参数变量

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

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

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

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

$1表示的是第一个参数,$0表示的是命令本身。

[root@localhost sh]# more parment.sh

#!/bin/bash

 

for i in $*  #循环输出

    do

      echo "The paramenters is : $i"

done

 

for y in "$@"

#同样 in 后面的有几个值,for 循环几次,每次都把值赋予变量 y

#可是 Shell 中把“$@”中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次

do

echo "The parameter$x is: $y"

#输出变量 y 的值

x=$(( $x +1 ))

#然变量 x 每次循环都加 1,为了输出时看的更清楚

done

 

(4)预定义变量:

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

$$  当前进程的进程号(PID)

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

 

9: 接收键盘输入

read [选项] [变量名]

选项:

-p “提示信息”:  在等待 read 输入时,输出提示信息

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

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

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

 

变量名:变量名可以自定义,如果不指定变量名,会把输入保存入默认变量 REPLY。如果只提供了一个变量名,则整个输入行赋予该变量。如果提供了一个以上的变量名,则输入行分为若干字,一个接一个地赋予各个变量。

猜你喜欢

转载自www.cnblogs.com/love-life-insist/p/11668763.html