LinuxShell脚本——变量和数据类型
LinuxShell脚本——变量和数据类型
摘要:本文主要学习了Shell脚本中的变量和数据类型。
变量
定义变量的语法
定义变量时,变量名和变量值之间使用“=”分隔,并且等号两边不能有空格:
变量名=变量值
变量名规则
变量名的定义必须遵循以下规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线。
不能使用标点符号。
不能使用bash里的关键字。
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,建议将变量名使用 {} 括起来之后再添加美元符号:
echo ${name}
修改变量为只读
使用readonly命令可以将变量定义为只读变量,只读变量的值不能被改变,也不能被删除:
readonly name
删除变量
使用unset命令可以删除变量,但不能删除只读变量:
unset name
位置参数
运行Shell脚本文件时我们可以给它传递一些参数,这些参数在脚本文件内部可以使用 $n 的形式来接收。例如: $ 表示第一个参数, $ 表示第二个参数,依次类推。
如果参数个数达到或者超过了10个,那么就得用 ${n} 的形式来接收了,例如: ${} 、 ${} 。 {} 的作用是为了帮助解释器识别参数的边界,这跟使用变量时加 {} 是一样的效果。
脚本内容:
#!/bin/bash
echo "第一个参数 : $1"
echo "第二个参数 : $2"
脚本调用:
[root@localhost ~]# sh test.sh A B
执行结果:
第一个参数 : A
第二个参数 : B
特殊变量
除了位置参数以外,Shell中还有一些特殊变量,这些特殊变量描述了传入参数的某些信息:
$:当前脚本的文件名。
$n:n是一个数字,表示第几个参数。
$#:传递给脚本或函数的参数个数。
$*:传递给脚本或函数的所有参数。当被双引号""包含时,会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。
$@:传递给脚本或函数的所有参数。当被双引号""包含时,仍然将每个参数都看作一份数据,彼此之间是独立的。。
$?:上个命令的退出状态,或函数的返回值。
$$:当前Shell的进程ID。对于Shell脚本,就是这些脚本所在的进程ID。
数据类型
字符串
字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。
建议使用双引号,因为双引号里可以有变量和特殊字符,可以按照变量和特殊字符去使用。
声明字符串类型的变量:
name="Sam"
拼接字符串:
hello="hello, $name !"
整数型
在Shell中所有的变量默认都是字符串型。也就是说,如果不手工指定变量的类型,那么所有的数值都是不能进行运算的:
[root@localhost ~]# a=
[root@localhost ~]# b=
[root@localhost ~]# c=$a+$b
[root@localhost ~]# echo $c
+
如果想要进行数学运算,可以使用“$((运算式))”或“$[运算式]”方式运算:
[root@localhost ~]# echo $(($a+$b)) [root@localhost ~]# echo $[$a+$b]
数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。用括号来表示数组,数组元素用空格符号分割开。定义数组的一般形式为:
数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
声明数组类型的变量:
数组名=(值1 值2 ... 值n)
也可以通过指定下标来声明:
数组名[下标]=值
获取数组指定下标的值:
${数组名[下标]}
使用“@”符号可以获取数组中的所有元素:
${数组名[@]}
LinuxShell脚本——变量和数据类型的更多相关文章
- Linuxshell脚本-格式-变量-条件测试
1.Linuxshell脚本格式 脚本文件名称格式: 1.NAME.sh.脚本文件名称必须以 .sh 结尾 脚本编辑第一行必须包括shell声明序列:#! 添加注释,注释以#开头 2.加3执行 ...
- 九天学会Java,第一天,变量和数据类型,赋值和输出
用9天入门三门编程语言,有可能嘛,尤其是对没有基础的同学来说?对于想学好的编程的人来说,无论从哪一门语言开始入手,语言的本身其实并不是我们最应该的关心的,至少不是作为一个初学者首先关心的. 网络上,网 ...
- javascript学习笔记(一):基础、输出、注释、引用、变量、数据类型
javascript脚本必须位于<script></script>之间,<script>标签可以位于<head>中,也可以位于<body>中 ...
- JS 01 变量_数据类型_分支循环_数组
点击直通车↓↓↓ 数据类型及数据类型的手动转换 数组 一.概念 JavaScript(JS)是一种基于对象和事件驱动.且可以与HTML标记语言混合使用的脚本语言,其编写的程序可以直接在浏览器中解释执 ...
- C#开发Unity游戏教程之使用脚本变量
C#开发Unity游戏教程之使用脚本变量 使用脚本变量 本章前面说了那么多关于变量的知识,那么在脚本中要如何编写关于变量的代码,有规章可循吗?答案是有的.本节会依次讲解变量的声明.初始化.赋值和运算. ...
- Javascript一(变量,数据类型,正则表达式,数据,语句)
本文章适合具有一定程序编程语言基础的人士阅读,最好学完Java基础再来阅读本文章更容易理解语言初学者会看起来比较费劲,不易理解 一.导入脚本 在html导入Javascript的格式是: <sc ...
- 初学JavaScript从入门到放弃(一)JavaScript介绍、变量、数据类型
一.JavaScript介绍 1.JavaScript:轻量级的客户端脚本语音 2.目前js已经不仅仅是客户语音,基于NODE可以做服务器端程序,所以Javascript是全栈编程语音 3.js及部分 ...
- Python变量和数据类型(入门2)
转载请标明出处: http://www.cnblogs.com/why168888/p/6400809.html 本文出自:[Edwin博客园] Python变量和数据类型 一.整数 int = 20 ...
- Linux-Shell脚本编程-学习-1-Linux基本命令
在学习Linux-Shell脚本编程之前,我们需要学习一定的Linux基本命令,不然在后面学习Shell脚本编程的的时候,我们就呵呵了. 我学习所用的系统是Ubuntu 16.04版本 也没有什么规则 ...
随机推荐
- Web安全测试学习笔记-DVWA-存储型XSS
XSS(Cross-Site Scripting)大致分为反射型和存储型两种,之前对XSS的认知仅停留在如果网站输入框没有屏蔽类似<script>alert('ok')</scrip ...
- JavaScript 引擎 V8 执行流程概述
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/t__Jqzg1rbTlsCHXKMwh6A作者:赖勇高 本文主要讲解的是V8的技术,是V8的入 ...
- 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU特性那些事(2)- RT1052DVL6性能实测(CoreMark)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的性能. 在前面的文章 i.MXRTyyyy微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2 ...
- 工作总结汇报公司介绍产品宣传品牌展示企业文化PPT模
清晰明了:在工作总结会议上都是要严肃为主,搞的花里胡哨既不好看也让领导有不好的影响:微粒体:模板样式立体效果非常好,能够一把将观众眼球给吸引住:样式齐全:各种PPT样式都有,能够承载工作汇报各种内容: ...
- CAD转PDF的软件哪个比较好用?用这两个很方便
大家都知道编辑CAD图纸是需要借助CAD制图软件来进行绘制的,而且CAD制图软件很多的设计师们都在使用.但是CAD中的图纸格式为dwg格式的,不想要使用CAD软件来查看图纸的话,就需要将CAD转换成P ...
- View和ViewGroup
1.继承关系 2.组合关系 3.View 的绘制流程 3.1.创建R.attrs.styleable,申明需要用到的属性值,在使用时可以根据属性进行定义 3.2.extends View ,依次 ...
- 获取格式字符串第idx个值及实例
--根据索引idx值获取格式串中第idx个值 如数据'11,12,13,14,15,16' 方法:格式串+分隔符:@str='11,12,13,14,15,16'+',' select dbo.Get ...
- MySQL数据库:排序及limit的使用
排序 排序方式: 升序--asc(默认:从小到大) 降序--desc(由大到小) # 排序语法: order by 字段1 [asc]|desc[,字段2 [adc]|desc,--] limit # ...
- Mysql—下载安装与使用
一.安装前准备 检查是否已经安装过mysql,执行命令,显示结果为:bt-mysql57-5.7.26-1.el7.x86_64 [root@localhost ~]# rpm -qa | grep ...
- Python入门基础学习(时间模块,随机模块)
Python基础学习笔记(六) time模块: 时间的三种表示方法: 1.格式化字符串 2.时间戳 用来表示和1970年的时间间隔,单位为s 3.元组 struct_time 9个元素 time的st ...