shell脚本编程之变量详解

什么是变量
    变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。 使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。
变量:变量类型
作用:
    1、数据存储格式
    2、参与的运算
    3、表示的数据范围
类型:
    字符
    数值:整型、浮点型
强类型:定义变量时必须指定类型、参与运算必须符合类型
要求;调用未声明变量会产生错误
    如 java,python
弱类型:无须指定类型,默认均为字符型;参与运算会自动
进行隐式类型转换;变量无须事先定义可直接调用
    如: bash 不支持浮点数
变量命名法则:
    1、不能使程序中的保留字:例如if, for;
    2、只能使用数字、字母及下划线,且不能以数字开头
    3、见名知义
    4、统一命名规则:驼峰命名法
根据变量的生效范围等标准:
    本地变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效
    环境变量:生效范围为当前shell进程及其子进程
    局部变量:生效范围为当前shell进程中某代码片断(通常指函数)
    位置变量: $1, $2, ...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
    特殊变量: $?, $0, $*, $@, $#
变量赋值: name=‘value’,
 可以使用引用value:
    (1) 可以是直接字串; name=“root"
    (2) 变量引用: name="$USER"
    (3) 命令引用: name=`COMMAND`, name=$(COMMAND)
 变量引用: ${name}, $name
    "":弱引用,其中的变量引用会被替换为变量值
    '':强引用,其中的变量引用不会被替换为变量值,而保
持原字符串
 显示已定义的所有变量: set
 删除变量: unset name
变量声明、赋值:
    export name=VALUE
    declare -x name=VALUE
 变量引用: $name, ${name}
显示所有环境变量:
    export
    env
    printenv
 删除: unset name
bash有许多内建的环境变量: PATH, SHELL, USRE,UID,HISTSIZE, HOME, PWD, OLDPWD, HISTFILE, PS1
只读变量:只能声时,但不能修改和删除
    readonly name
    declare -r name
位置变量:在脚本代码中调用通过命令行传递给脚本的参数
    $1, $2, ...:对应第1、第2等参数, shift [n]换位置
    $0: 命令本身
    $*: 传递给脚本的所有参数,全部参数合为一个字符串
    $@: 传递给脚本的所有参数,每个参数为独立字符串
    $#: 传递给脚本的参数的个数
    $@ $* 只在被双引号包起来的时候才会有差异
示例:判断给出的文件的行数
    linecount="$(wc -l $1| cut -d' ' -f1)"
    echo "$1 has $linecount lines."

原创文章,作者:RecallWzc,如若转载,请注明出处:http://www.178linux.com/35713

(0)
RecallWzcRecallWzc
上一篇 2016-08-15 09:21
下一篇 2016-08-15 09:22

相关推荐

  • linux磁盘管理之LVM

                        LVM  LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁…

    Linux干货 2016-09-09
  • SecureCRT 8.0的安装及Linux基本命令介绍

    在CentOS虚拟中安装并打开图形界面后,可以在图形界面和命令行界面之间任意切换。在打开终端后输入init3可以切换至命令行界面,输入init5返回到图形界面。 这里我们用SecureCRT 8.0来远程的对虚拟机进行操作,对于SecureCRT 8.0的安装步骤就不详细介绍,简单介绍下如何连接到CentOS。 1. 2.点击完成。   &nbsp…

    2017-07-13
  • 堡垒机-麒麟开源堡垒机SSH公私钥认证配置文档

    1、进入SSH公私钥管理界面 操作步骤:进入系统,点击左侧导航资产管理,后边TAB标签导航SSH公私钥,如下图     2、批量导入SSH公私钥: SSH公私钥管理界面,点击下方”导入“,进入导入页面上传公私钥,     上传说明: 1) 讲所有的公私钥放到一个名为pvt的空文件夹中。 2) 在同样…

    Linux干货 2016-05-29
  • Centos 5\6的启动流程简介

     Centos 5\6的启动流程简介图如下  第三步说明:磁盘的第一个扇区512字节的前446是bootloader,与此446字节与grub Stage1的446字节是一样的,主要功能是加载/boot/grup/目录下的文件     stage1.5加载相应用的文件系统文件并识别,如ext系列使用的e2fs…

    Linux干货 2016-06-03
  • 浅谈Openssl与私有CA搭建

        随着网络技术的发展、internet的全球化,信息共享程度被进一步提高,各种基于互联网的应用如电子政务、电子商务日益增多并愈加被人们工作和生活依赖。但是,由于互联网的开放性和通用性,网络上的信息是对所有人公开的,这就使网络上的数据传输过程中存在被窃听、篡改等安全隐患,并极有可能给用户带来不可估量的损失。为此,各种保证数据在互联网上…

    Linux干货 2015-06-04
  • MariaDB基础

    MariaDB基础 关系型数据库的基础概念: 1)数据类型:作用:存储格式、数据范围、所能参与的运算、排序方式         字符型:         定长字符型:CHAR(#),BIARNY(#)…

    Linux干货 2016-11-07

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-15 09:58

    总结的很好,很实用