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 ...
随机推荐
- (3)arp协议
arp协议:通过ip找mac(交换机不能识别ip) arp解析表: mac 和 ip 的映射关系 arp协议: 通过ip找到mac,可以减少广播的频率,减少主机的损耗. arp协议: 能够完成,依靠交 ...
- YY的GCD
YY的GCD 给出T个询问,询问\(\sum_{i=1}^N\sum_{j=1}^M(gcd(i,j)\in prime)\),T = 10000,N, M <= 10000000. 解 显然质 ...
- 【Mac】系统语言切换为英文后chrome浏览器无法用国内印象笔记账号登陆印象笔记剪藏
解决办法: 将chrome浏览器语言设置成中文就可以了
- Centos7 防火墙frewalld规则设置
配置firewalld-cmd 查看版本: firewall-cmd --version 查看帮助: firewall-cmd --help 显示状态: firewall-cmd --state 查看 ...
- (详细)华为V9 DUK-AL20的usb调试模式在哪里打开的方法
当我们使用PC通过数据线链接到安卓手机的时候,如果手机没有开启USB开发者调试模式,PC则没办法成功识别我们的手机,有时我们使用的一些功能较好的软件好比以前我们使用的一个软件引号精灵,老版本就需要打开 ...
- yii2部署nginx
页面全部提示404,nginx平台下需要额外配置yii rewrite规则,配置如下: 在nginx 的配置文件nginx.conf //增加部分 location / { # Redirect ev ...
- 菜鸡学C语言之寻根溯源
题目描述 Mogg最近翻了翻自己家的族谱,想康康祖先是谁.但是族谱因为年久失修太乱了,他现在只整理出来了一系列父子关系,你能帮他找一找直系亲属中辈分最大的一位吗?(即父亲的父亲的父亲……) 输入 第1 ...
- 『计算机视觉』YOLO系列总结
网络细节资料很多,不做赘述,主要总结演化思路和解决问题. 一.YOLO 1.网络简介 YOLO网络结构由24个卷积层与2个全连接层构成,网络入口为448x448(v2为416x416),图片进入网络先 ...
- 在命令行启动vscode
1.windows使用 code . 命令打开vscode 1.打开vscode安装位置,进入bin文件夹,复制路径 eg:E:\Microsoft VS Code\bin:2.回到桌面,右键我的电脑 ...
- python 几分钟前,几小时前,几天前转为时间戳
一开始我是这么做的 import time import datetime def conv_time(t): min = re.findall('\d+', t)[0] if u'分钟' in t: ...