Shell变量

一、什么是变量与变量分类
1、什么是变量
# 变量是计算机内存的单元,其中存放的值可以改变
# 变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。

2、变量命名规则
# 变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线组成。
# 变量名的长度不得超过255个字符。
# 变量名在有效的范围内必须是唯一的。
# 在Bash中,变量的默认类型都是字符串型

3、变量按照存储数据分类
# 字符串型
# 整型
# 浮点型
# 日期型

4、变量的分类
# 用户自定义变量。变量自定义的
# 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的
# 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
# 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

二、用户自定义变量
1、定义变量
变量名=变量值(等号前后不能有空格)
例如:
— x=5
— name=”jie cao”

2、变量调用
echo $变量名
例如:
— echo $x
— echo $name

3、变量叠加
— x=123
— x=”$x”456
— x=${x}789

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

5、变量删除
unset 变量名

三、环境变量
1、环境变量与用户自定义变量的区别?
# 环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量。用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell当中生效
# 变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的

— [root@localhost ~]# pstree
# 查看进程树

2、设置环境变量
export 变量名=变量值

变量名=变量值
export 变量名

3、查看环境变量
set
# 查看所有变量

env
# 查看环境变量

4、删除环境变量
unset 变量名

5、常用环境变量
— HOSTNAME:主机名
— SHELL:当前的shell
— TERM:终端环境
— HISTSIZE:历史命令条数
— SSH_CLIENT:当前操作环境是用ssh连接的,这里记录客户端ip
— SSH_TTY:ssh连接的终端时pts/1
— USER:当前登录的用户

6、PATH环境变量
PATH变量:系统查找命令的路径

— echo $PATH
# 查看PATH环境变量

— PATH=”$PATH”:/root/sh
#增加PATH变量的值

7、PS1环境变量
PS1变量:命令提示符设置
— \d:显示日期,格式为”星期 月 日“
— \H:显示完整的主机名。如默认主机名”localhost.localdomain”
— \t:显示24小时制时间,格式为”HH:MM:SS”
— \A:显示24小时制时间,格式为”HH:MM”
— \u:显示当前用户名
— \w:显示当前所在目录的完整名称
— \W:显示当前所在目录的最后一个目录
— \$:提示符。如果是root用户会显示提示符为”#”,如果是普通用户会显示提示符为”$”

例:
— [root@localhost ~]# PS1='[\u@\A \w]\$ ‘

8、当前语系查询
locale
# 查询当前系统语系
— LANG:定义系统主语系的变量
— LC_ALL:定义整体语系的变量

9、语系变量LANG
echo $LANG
# 查看系统当前语系
locale -a | more
# 查看Linux支持的所有语系

10、查询系统默认语系
cat /etc/sysconfig/i18n

11、Linux中文支持
前提条件,正确安装的中文字体和中文语系
# 如果有图形界面,可以正确支持中文显示
# 如果使用第三方远程工具,只要语系设定正确,可以支持中文显示
# 如果使用纯字符界面,必须使用第三方插件(如zhcon等)

四、位置参数变量
1、位置参数变量
Location parameter variables

例子1:

#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))
#变量sum的和是num1加num2
echo $sum
#打印变量sum的值

例子2

#!/bin/bash
echo "A total of $# parameters"
#使用$#代表所有参数的个数
echo "The parameters is:$*"
#使用$*代表所有的参数
echo "The parameters is:$@"
#使用$@也代表所有参数

例子3:$*与$@的区别

#!/bin/bash
for i in "$*"
#$*中的所有参数看成是一个整体,所以这个for循环只会循环一次
  do
      echo "The parameters is $i"  
  done

for y in "$@"
#$@中的每个参数都看成是独立的,所以"$@"中有几个参数,就会循环几次
  do
     echo "Parameter:$y"
  done

五、预定义变量
1、预定义变量
The predefined variables

2、接收键盘输入
read [选项] [变量名]
选项:
— -p “提示信息”:在等待read输入时,输出提示信息
— -t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
— -n 字符数:read命令只接受指定的字符数,就会执行
— -s:隐藏输入的数据,适用于机密信息的输入

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据