shell变量

1、shell变量简介

变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则。

在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储;这意味着,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。

2、定义变量

Shell 常用三种定义变量的方式:

variable=value
variable=‘value’ #所见即所得
variable=“value” #进行转义
variable=cat test #执行命令将命令输出赋值给变量
Shell 变量的命名规范和大部分编程语言都一样:

变量名由数字、字母、下划线组成;
必须以字母或者下划线开头;
不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。

3、使用变量

aa=“cjk”
echo $aa
cjk
echo ${aa} #推荐给所有变量加上花括号{ },这是个良好的编程习惯
cjk

4、删除变量

使用 unset 命令可以删除变量
aa=“cjk”
echo ${aa}
cjk
unset aa #unset 命令不能删除只读变量
echo ${aa}

5、变量类型

运行shell时,会同时存在三种变量:

局部变量

局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

环境变量

所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

shell变量

shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

6、系统变量

在命令行提示符直接执行 env、set 查看系统或环境变量。env 显示用户环境变量,set 显示 Shell 预先定义好的变量以及用户变量。可以通过 export 导出成用户变量。一些写 Shell 脚本时常用的系统变量

系统变量名 系统变量意识
$SHELL 默认 Shell
$HOME 当前用户家目录
$IFS 内部字段分隔符
$LANG 默认语言
$PATH 默认可执行程序路径
$PWD 当前目录
$UID 当前用户 ID
$USER 当前用户
$HISTSIZE 历史命令大小,可通过 HISTTIMEFORMAT 变量设置命令执行时间
$RANDOM 随机生成一个 0 至 32767 的整数
H O S T N A M E 主 机 名 生 成 8 位 随 机 数 : e c h o " HOSTNAME 主机名 生成8位随机数:echo " HOSTNAME8:echo"RANDOM"|md5sum|cut -c 1-8

7、普通变量和环境变量

普通变量定义:VAR=value
临时环境变量定义:export VAR=value
变量引用:$VAR
区别:Shell 进程的环境变量作用域是 Shell 进程,当 export 导入到系统变量时,则作用域是 Shell 进程及其 Shell 子进程,另开shell无效。
8、特殊变量列表(shell变量)
变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$? 上个命令的退出状态,或函数的返回值,成功会返回 0,失败返回非0
$$ 当前Shell进程ID,对于 Shell 脚本,就是这些脚本所在的进程ID

实例:
vim test.sh
#!/bin/bash
echo “File Name: $0”
echo “First Parameter : $1”
echo “First Parameter : $2”
echo “Quoted Values: $@”
echo “Quoted Values: $*”
echo “Total Number of Parameters : $#”

bash test.sh hello cjk touch
File Name: test.sh
First Parameter : hello
First Parameter : cjk
Quoted Values: hello cjk touch
Quoted Values: hello cjk touch
Total Number of Parameters : 3
echo $?
0
ddd ddd
zsh: command not found: ddd
echo $?
127

shift 命令 将参数向前移一位
shift n 向前移n位

shell条件表达式与运算符

9、条件表达式

表达式 实例
[ expression ] [ 1 -eq 1 ]
[[ expression ]] [[ 1 -eq 1 ]]
test expression test 1 -eq 1 ,等同于[]
注意:括号中的表达式前后都有空格,否则会报错!

[ 1 -eq 1 ] && echo “true” || echo “false”
true
[ 1 -eq 2 ] && echo “true” || echo “false”
false
[1 -eq 2] && echo “true” || echo “false”
zsh: bad pattern: [1

10、整数比较符

比较符 描述 实例
-eq, equal 等于 [ 1 -eq 1 ] 为true
-ne, not equal 不等于 [ 1 -ne 1 ] 为false
-gt, greate than 大于 [ 1 -gt 1 ] 为false
-lt, lesser than 小于 [ 1 -lt 1 ] 为false
-ge, greate or equal 大于或者等于 [ 1 -ge 1 ] 为true
-le, lesser or equal 小于或者等于 [ 1 -le 1 ] 为true

11、字符串比较符

运算符 描述 实例
== 等于 [ “a” == “a” ] 为true
!= 不等于 [ “a” != “a” ] 为false
-n 字符串长度不等于 0 为真 VAR1=1;VAR2=””
[ -n “ V A R 1 ” ] 为 t r u e [ − n “ VAR1” ]为 true [ -n “ VAR1]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值