Shell 有类型变量
1、通过 declare 和 typeset 命令
- declare 和 typeset 两者等价
- declare 和 typeset 都是用来定义变量类型的
- 下面以 declare 进行总结
2、declare 参数如下
- -r 将变量设置为只读
- -i 将变量设置为整数
- -a 将变量设置为数组
- -F 显示此脚本前定义过的所有函数及内容
- -f 仅显示此脚本前定义过的函数名
- -x 将变量声明为环境变量
3、举例:
例1: 声明为不可变形式, declare -r
$ var=hello
$ var=world
$ echo $var
打印出:world // 说明 var是可变的
$ declare -r var=hello
$ var=world
打印结果:-bash: var: 只读变量
例2:声明为整型, declare -i
$ num=10
$ num2=$num+20
$ echo $num2
打印出:10+20
$ expr $num + 20
打印出:30
$ num=10
$ declare -i num3
$ num3=$num+90
$ echo $num3
打印出:100
例3:显示出系统中定义的 函数名及函数体
$ declare -F
例4: 显示出系统中定义的所有函数的函数名
$ declare -f
例5:声明为数组, declare -a
$ declare -a array // 声明一个数组
$ array=("jones" "mike" "kobe" "jordan") // 赋值
输出数组内容:
$ echo ${array[@]} // 输出全部内容,打印出:jones mike kobe jordan
$ echo ${array[0]} // 输出数组元素下标为0的值,打印出:jones
获取数组长度:
$ echo ${#array[@]} // 输出数组长度,打印出:4
$ echo ${#array[0]} // 输出数组第0个元素的长度,打印出:5
给数组某个下标赋值:
$ array[0]=lisi
$ echo ${array[@]} // 输出:lisi mike kobe jordan
给数组尾部添加一个元素:
$ array[10]=zhangsan // 下标必须大于数组长度 - 1,可以大很多
删除元素:
$ unset array[2] // 删除数组的第三个元素
$ unset array // 清空整个数组
分片访问:
$ echo ${array[@]:1:3} // 从下标为 1 的位置开始,向后取 3个元素,忽略中间的空元素,直到取够 3个元素。如果元素不足3个,则输出后面的所有元素即可。
内容替换:
$ array2=${array[@]/ke/KE} // 将数组中所有 ke 替换为 KE。
$ echo ${array2[@]}
数组遍历:
for v in ${array[@]}
do
echo $v
done
例6: 声明为环境变量 declare -x
$ declare -x num // num 成为环境变量后,就可以在脚本中直接使用。 如果不是环境变量,则只能在这个终端里面使用。
4、取消声明的变量
declare +r
declare +i
declare +a
declare +x
总结:向数组array [0,1,2,3,4]末尾添加元素,如果数组长度为5,添加新元素 7的时候下标指向的是 7,那么数组为 [0,1,2,3,4, , ,7],这时候数组长度为6,此时 array[5] 和 array[6] 值为空,array[7] 的值为7。
Shell 有类型变量的更多相关文章
- shell编程系列4--有类型变量:字符串、只读类型、整数、数组
shell编程系列4--有类型变量:字符串.只读类型.整数.数组 有类型变量总结: declare命令和typeset命令两者等价 declare.typeset命令都是用来定义变量类型的 decla ...
- shell的历史
shell的历史 shell概况 人想要和操作系统进行交互,传送指令给操作系统,就需要使用到shell.宏义的shell是人与机器交互的页面,它分为两种,一种是有界面的,比如GUI,另外一种是没有界面 ...
- Shell中的变量
一.什么是变量 变量在 bash 环境中是非常重要的,简单的说,就是让某一个特定字符串来代表不固定的内容.举例: 那就是:『 y = ax + b 』这东西,在等号左边的(y)就是变量,在等号右边的( ...
- [转]Windows Shell 编程 第二章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987893】
第二章Shell的结构 “Shell 编程”的大伞之下有大量的API函数和COM接口.这个种类繁多的‘命令’集允许你用不同的方法对Windows Shell进行编程.函数和接口并不是两种提供相同功能 ...
- shell编程其实真的很简单(二)
上篇我们学会了如何使用及定义变量.按照尿性,一般接下来就该学基本数据类型的运算了. 没错,本篇就仍是这么俗套的来讲讲这无聊但又必学的基本数据类型的运算了. 基本数据类型运算 操作符 符号 语义 描述 ...
- Shell中的算术运算(译)
算术运算 尽管Shell中的变量被缺省地看做是string类型,而非number,但是Shell本身仍然支持算术运算.主要有以下5种方式. 1. declare 2. expr $ z=5 $ z=` ...
- Linux shell的问题
1.uptime命令可以查看当前系统的启动时间: w命令显示当前登录者top命令显示当前任务ps命令显示所有进程信息 uptime命令可以查看系统启动时间 2.使用shell时,默认的环境变量放在 ...
- 用Shell编写的俄罗斯方块代码
用Shell编写的俄罗斯方块代码 不得不承认任何一门语言玩6了,啥都能搞出来啊,竟然用Shell编写出来了一个俄罗斯方块游戏的代码,很有意思,这个代码不是我写出来的,不过大家可以下载一下在window ...
- ipython是python的交互式shell工具
ipython: 是python的交互式shell工具,比默认的python shell工具要好用.支持变了自动补全,自动缩进,内置了很多的功能和函数 启动:可以通过cmd来启动该工具 自动补全: I ...
随机推荐
- Flume+Sqoop+Azkaban笔记
大纲(辅助系统) 离线辅助系统 数据接入 Flume介绍 Flume组件 Flume实战案例 任务调度 调度器基础 市面上调度工具 Oozie的使用 Oozie的流程定义详解 数据导出 sqoop基础 ...
- vue 渲染后更新数据
this.$set(this.selGetData,level,[{},{}])this.$set(this.selGetData,1,{message:"Test add attr&quo ...
- class类初始化之后调用赋值问题记录
class PWSTRDELL: def __init__(self, pw_str):#该方法在类实例化时会自动调用 self.pw = pw_str self.strength_level = 0 ...
- vue中的keep-alive
本文转载于:https://blog.csdn.net/xum222222/article/details/80322532 转载仅供个人日后学习 https://www.cnblogs.com/ji ...
- 未在本地计算机上注册microsoft.ace.12.0的解决办法
(1)去http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabase ...
- linux所有命令不能用显示-bash: ls: command not found
所有的命令都显示找不到了,原因是修改了/etc/profile造成的 解决方法 1.修正属性文件中的错误 /usr/bin/vi /etc/profile 2.生效属性文件 source /etc/p ...
- JS 超类和子类
此篇由别的大神的博客与<javascript高级程序设计>一书整理而来 原博客地址:https://hyj1254.iteye.com/blog/628555 看到javascript高级 ...
- HCharts随笔之简单入门
此处可以对比我的另一个Echars简单入门 直接上源码 <!DOCTYPE html> <html> <head> <meta http-equiv=&quo ...
- 【分享】用Canvas实现画板功能
前言 PC端测试:QQ浏览器全屏绘画完成.缩小时内容会被清空,切换背景颜色内容会被重置,其他暂无发现: 手机端测试:微信内置浏览器不通过:Safari 浏览器使用画笔时没固定页面会有抖动效果,使用橡皮 ...
- python--多线程多进程
一.进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程.进程是很多资源 ...