Shell编程之变量

Shell编程

    在管理和维护Linux系统时,经常遇到大量重复和繁琐的问题,比方说执行运算和每天进行文件备份,这对于人来说是不可能完成的。但是对于计算机来说是相当迅速和准确的,而在Linux上较为方便的就是编写shell脚本进行实现。
    准确的说,shell不是一种编程语言,而是一种解释语言,即是边解释边执行的语言,不像C和Java那样需要编译后才能执行。而解释器就是shell。
    作为大多数初学者来说,可能对变量的认识不清或者重视程度不够,这将对以后的学习产生很大的阻碍。

变量(variable)

1.概念:变量是用来储存数据的一个抽象的概念。可以通过变量名来访问储存在变量空间的数据。在shell中,变量不需要声明,可以直接使用。在使用时会自动根据上下文进行判断变量的类型,默认为字符型
变量命名法则:
1)、 不能是程序中的保留字:例如if, for
2)、只能使用数字、字母及下划线,且不能以数字开头
3)、见名知义
4)、统一命名规则:驼峰命名法

2.变量的分类
根据变量的生效范围等标准:
本地变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效
环境变量:生效范围为当前shell进程及其子进程
局部变量:生效范围为当前shell进程中某代码片断(通常指函数),由于涉及本博客之外的函数知识,所以不在此讨论。
位置变量:$1, $2, …来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
例:
内置变量:SHLVL,查看当前shell的级别。
命令:bash,打开并进入当前shell的子shell。
命令:export var,将变量var 从本地变量升级为环境变量。也可以直接export var=abc 定义一个环境变量。

3.变量的声明
1)varname=value 声明一个本地变量并赋值
2)export varname=value 声明一个环境变量
3)export varname 将一个本地变量升级为环境变量
4)declare -x varname=value 声明一个环境变量
5)declare -r varname=value 声明一个常量
6)readonly varname=value 声明一个常量

4.变量的引用
$varname
“$varname”
${varname} :当变量后边也有字符时,可以用{}标定变量的范围。
当变量值当中包含换行符,如果希望引用出的值同样包含换行符,只能使用”$varname”,否则将会把换行符显示为空格。
这里写图片描述
5.变量的查询
本地变量的查询
set (既查本地,也查环境)
环境变量的查询
env
printenv
export
declare -x
只读变量的查询
readonly -p

6.变量的撤销。
变量在使用完之后可以手动释放,以减少内存的开支。
unset varname :撤销变量varname。
set - - :在脚本中使用可以撤销在此脚本中此语句前声明的所有变量。
这里写图片描述
7.特殊变量
$? :引用上一条命令执行的状态,执行成功为0,错误为1-255之间的数
$0 :引用一个命令的本身
$* :传递给脚本的所有参数,全部参数合为一个字符串
$@:传递给脚本的所有参数
$# :传递给脚本的参数的个数
$$ :当前进程的进程号
以下是test文件中的代码

#!/bin/bash
echo $0
echo $1
echo $2
echo $*
echo $@
echo $#
echo $$

运行结果如图:
这里写图片描述

常用的shell 内建变量。
PATH :当前的环境变量的路径
SHELL :当前使用的shell
USER :当前登陆的用户名
UID :当前登陆的用户的id
HOME :当前用户的家目录的路径
PWD :当前的绝对路径
SHLVL :当前shell的等级
LANG :当前的语言编码
MAIL :当前用户的email保存路径
HOSTNAME :主机名
下面是root用户执行的结果
这里写图片描述

8.使用变量进行数值计算
由于在shell编程中没有变量类型的概念,所以在进行数值计算时需要进行特殊的处理或者格式。
+, -, *, /, %取模(取余), (乘方)**
实现算术运算:
(1) let var=算术表达式
(2) var=$[算术表达式]
(3) var=$((算术表达式))
(4) var=$(expr arg1 arg2 arg3 …)
(5) declare –i var= 数值 声明一个整型

这里写图片描述

现在是不是已经跃跃欲试了,赶紧练一下手吧!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值