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编程(七)变量引用及作用范围
变量引用 那么定义好变量,如何打印变量的值呢?举例下变量引用的方式. ${变量名}称作为对变量的引用 echo ${变量名}查看变量的值 ${变量名}在部分情况下可以省略成 $变量名 [root@li ...
- 小鸟初学Shell编程(六)变量赋值
变量的意义 我们在使用Linux命令或脚本的时候,会有一些输出,那么这些输出的信息可以用变量临时存储,以备我们下一条命令或脚本使用. 变量的定义 变量的定义建议用一个有意义的英文单词来代表变量,不要使 ...
- shell编程基本语法和变量
一.编写shell脚本基本格式 拿最简单的hello word举例 .#!/bin/bash echo 'hello world' .#!/bin/bash:告诉计算机,使用bash解释器来执行代码 ...
- Linux Shell编程(8)——变量详解
不同与许多其他的编程语言,Bash不以"类型"来区分变量.本质上来说,Bash变量是字符串,但是根据环境的不同,Bash允许变量有整数计算和比较.其中的决定因素是变量的值是不是只含 ...
- Linux Shell编程(6)——变量替换
变量的名字是它的值保存的地方.引用它的值称为变量替换.$让我们仔细地区别变量和变量的值.如果variable1是一个变量的名字,那么$variable1就是引用这个变量的值――即这个变量它包含的数据. ...
- Linux Shell编程(7)——变量赋值
=赋值操作符(它的左右两边不能有空白符) 不要搞混了=和-eq,-eq是比赋值操作更高级的测试.注意:等于号(=)根据环境的不同它可能是赋值操作符也可能是一个测试操作符.例子:简单的变量赋值 #!/b ...
- Linux学习——shell编程之环境变量配置文件
小白学习,在学习中总结! shell编程之环境变量配置文件 一:环境变量配置文件 1 shell编程之环境变量配置 变量类型: 用户自定义变量(本地变量) 环境变量 :定义每个用户的操作环境,如pat ...
- Linux学习——shell编程之变量
shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...
- Shell 编程基础之变量和环境变量
一.变量赋值和引用 Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则: 首个字符必须为字母(a-z,A-Z)或者_ 变量名中间不能有空格,可以使用_连接 不能使用其他表达符号 ...
- Linux Shell编程变量赋值和引用
我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bin/sh ... 注意:最好使用“! ...
随机推荐
- Base64加密工具
正常来讲加密基本上永远都要伴随着解密,所谓的加密或者解密,往往都需要有一些规则,在JDK1.8开始,提供有新的加密处理操作类,Base64处理类--Base64类 在该类之中存在两个内部类:Base6 ...
- 领域驱动设计(DDD:Domain-Driven Design) 转摘自:http://www.jdon.com/ddd.html
Eric Evans的“Domain-Driven Design领域驱动设计”简称DDD,Evans DDD是一套综合软件系统分析和设计的面向对象建模方法,本站Jdon.com是国内公开最早讨论DDD ...
- kubernetes容器集群管理创建node节点kubeconfig文件
1.创建TLS Bootstrapping Token 2.创建kubelet kubeconfig 3.创建kube-proxy kubeconfig 安装和设置kubectl [root@mast ...
- notepad++编辑软件
官网:http://notepad-plus-plus.org/ 官网截图(2015/4/29): 版本: Notepad++ 6.7.7 下载地址:http://notepad-plus-plus. ...
- 11.Container With Most Water (Array; Two-Pointers)
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). ...
- 转:动态库路径配置- /etc/ld.so.conf文件
Linux 共享库 Linux 系统上有两类根本不同的 Linux 可执行程序.第一类是静态链接的可执行程序.静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”.因为这一原因,静态可 ...
- 利用Stream模式进行文件拷贝
const fs = require('fs'); const file = fs.createReadStream("readfile.js"); const outputFil ...
- c++后台开发面试常见知识点总结(三)操作系统
静态链接库和动态链接库的区别 一个进程可以通过调用waitpid函数来等待它的子进程终止或者停止 Debug和Release的区别 临界区互斥量信号量事件进程互斥与同步 进程有哪几种状态,状态转换图, ...
- hibernate 1 对1
举例:部门departments -------部门经理managers 映射 有两种方式 1:外键映射.类似于多对1.但是设置了unique唯一. 带外键的: package com.hiber ...
- UNP学习 ioctl操作
一.ioctl函数 #include <unistd.h> int ioctl(int fd, int request, ... /* void * arg */); 返回:成功0,出错- ...