shell简单四则运算及数组定义

文章目录

  • shell简单四则运算及数组定义
  • 一、简单四则运算
  • 1. 四则运算符号
  • 2.了解i++和++i
  • 二、数组定义
  • 1. 数组定义
  • 2. 其他变量定义

一、简单四则运算

算术运算:默认情况下,shell就只能支持简单的整数运算
运算内容:加(+)、减(-)、乘(*)、除(/)、求余数(%)

1. 四则运算符号

2.了解i++和++i

对变量的值的影响:

[root@wolf ~]# i=1
[root@wolf ~]# let i++
[root@wolf ~]# echo $i
2
[root@wolf ~]# j=1
[root@wolf ~]# let ++j
[root@wolf ~]# echo $j
2

对表达式的值的影响:

[root@wolf ~]# unset i j
[root@wolf ~]# i=1;j=1
[root@wolf ~]# let x=i++ 先赋值,再运算
[root@wolf ~]# let y=++j 先运算,再赋值
[root@wolf ~]# echo $i
2
[root@wolf ~]# echo $j
2
[root@wolf ~]# echo $x
1
[root@wolf ~]# echo $y
2

二、数组定义

1. 数组定义

㈠ 数组分类
普通数组:只能使用整数作为数组索引(元素的下标)
关联数组:可以使用字符串作为数组索引(元素的下标)

㈡ 普通数组定义

  • 一次赋予一个值
数组名[索引下标]=值
array[0]=v1
array[1]=v2
array[3]=v3
  • 一次赋予多个值
数组名=(值1 值2 值3 ...)
array=(var1 var2 var3 var4)
array1=(`cat /etc/passwd`) 将文件中每一行赋值给array1数组
array2=(`ls /root`)
array3=(harry amy jack "Miss Hou")
array4=(1 2 3 4 "hello world" [10]=linux)

㈢ 数组的读取

${数组名[元素下标]}
echo ${array[0]} 获取数组里第一个元素
echo ${array[*]} 获取数组里的所有元素
echo ${#array[*]} 获取数组里所有元素个数
echo ${!array[@]} 获取数组元素的索引下标
echo ${array[@]:1:2} 访问指定的元素;1代表从下标为1的元素开始获取;2代表获取后面几个元素
查看普通数组信息:
[root@wolf ~]# declare -a

㈣ 关联数组定义
①首先声明关联数组

declare -A asso_array1
declare -A asso_array2
declare -A asso_array3

② 数组赋值

  • 一次赋一个值
数组名[索引or下标]=变量值
# asso_array1[linux]=one
# asso_array1[java]=two
# asso_array1[php]=three
  • 一次赋多个值
# asso_array2=([name1]=harry [name2]=jack [name3]=amy [name4]="Miss Hou")
  • 查看关联数组
# declare -A
declare -A asso_array1='([php]="three" [java]="two" [linux]="one" )'
declare -A asso_array2='([name3]="amy" [name2]="jack" [name1]="harry" [name4]="Miss Hou" )'
  • 获取关联数组值
# echo ${asso_array1[linux]}
one
# echo ${asso_array1[php]}
three
# echo ${asso_array1[*]}
three two one
# echo ${!asso_array1[*]}
php java linux
# echo ${#asso_array1[*]}
3 #
echo ${#asso_array2[*]}
4 #
echo ${!asso_array2[*]}
name3 name2 name1 name4

2. 其他变量定义

  • 取出一个目录下的目录和文件: dirname 和 basename
# A=/root/Desktop/shell/mem.txt
# echo $A
/root/Desktop/shell/mem.txt
# dirname $A 取出目录
/root/Desktop/shell
# basename $A 取出文件
mem.txt
  • 变量"内容"的删除和替换
一个“%”代表从右往左去掉一个/key/
两个“%%”代表从右往左最大去掉/key/
一个“#”代表从左往右去掉一个/key/
两个“##”代表从左往右最大去掉/key/
举例说明:
# url=www.taobao.com
# echo ${#url} 获取变量的长度
# echo ${url#*.}
# echo ${url##*.}
# echo ${url%.*}
# echo ${url%%.*}
  • 以下了解
替换:/ 和 //
1015 echo ${url/ao/AO}
1017 echo ${url//ao/AO} 贪婪替换替代: - 和 :- +和:+
1019 echo ${abc-123}
1020 abc=hello
1021 echo ${abc-444}
1022 echo $abc
1024 abc=
1025 echo ${abc-222}${变量名-新的变量值} 或者 ${变量名=新的变量值}
变量没有被赋值:会使用“新的变量值“ 替代
变量有被赋值(包括空值): 不会被替代
1062 echo ${ABC:-123}
1063 ABC=HELLO
1064 echo ${ABC:-123}
1065 ABC=
1066 echo ${ABC:-123}${变量名:-新的变量值} 或者 ${变量名:=新的变量值}
变量没有被赋值或者赋空值:会使用“新的变量值“ 替代
变量有被赋值: 不会被替代
1116 echo ${abc=123}
1118 echo ${abc:=123}
[root@wolf ~]# unset abc
[root@wolf ~]# echo ${abc:+123}
[root@wolf ~]# abc=hello
[root@wolf ~]# echo ${abc:+123}
123
[root@wolf ~]# abc=
[root@wolf ~]# echo ${abc:+123}${变量名+新的变量值}
变量没有被赋值或者赋空值:不会使用“新的变量值“ 替代
变量有被赋值: 会被替代
[root@wolf ~]# unset abc
[root@wolf ~]# echo ${abc+123}
[root@wolf ~]# abc=hello
[root@wolf ~]# echo ${abc+123}
123
[root@wolf ~]# abc=
[root@wolf ~]# echo ${abc+123}
123${变量名:+新的变量值}
变量没有被赋值:不会使用“新的变量值“ 替代
变量有被赋值(包括空值): 会被替代
[root@wolf ~]# unset abc
[root@wolf ~]# echo ${abc?123}
-bash: abc: 123
[root@wolf ~]# abc=hello
[root@wolf ~]# echo ${abc?123}
hello
[root@wolf ~]# abc=
[root@wolf ~]# echo ${abc?123}${变量名?新的变量值}
变量没有被赋值:提示错误信息
变量被赋值(包括空值):不会使用“新的变量值“ 替代
[root@wolf ~]# unset abc
[root@wolf ~]# echo ${abc:?123}
-bash: abc: 123
[root@wolf ~]# abc=hello
[root@wolf ~]# echo ${abc:?123}
hello
[root@wolf ~]# abc=
[root@wolf ~]# echo ${abc:?123}
-bash: abc: 123
${变量名:?新的变量值}
变量没有被赋值或者赋空值时:提示错误信息
变量被赋值:不会使用“新的变量值“ 替代
说明:?主要是当变量没有赋值提示错误信息的,没有赋值功能

shell编程之简单四则运算及数组定义相关推荐

  1. Linux疑难杂症解决方案100篇(七)-SHELL编程变量与四则运算

    前言 ① Shell的基本语法结构 如:变量定义.条件判断.循环语句(for.until.while).分支语句.函数和数组等: ② 基本正则表达式的运用; ③ 文件处理三剑客:grep.sed.aw ...

  2. Shell编程-JAVA大数据-Week5-DAY3-linux

    文章目录 前言 2.5 Shell编程 2.5.1. 概述 **2.5.2. HelloWorld** **2.5.3.** **变量** **2.5.3.2.** **使用变量** **重新定义变量 ...

  3. C语言 二维数组定义和使用 - C语言零基础入门教程

    目录 一.二维数组简介 二.定义二维数组并初始化 1.定义二维数组 2.初始化二维数组 三.访问二维数组 四.修改二维数组 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 & ...

  4. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

  5. Shell编程中的数组定义、遍历

    数组定义法1: arr=(1 2 3 4 5) # 注意是用空格分开,不是逗号!!数组定义法2: array array[0]="a" array[1]="b" ...

  6. SHELL编程之变量定义

    SHELL编程 学习前奏 1. 文件处理工具 1.1 grep工具 1.2 cut工具 1.3 sort工具 1.4 uniq工具 1.5 tee工具 1.6 paste工具 1.7 tr工具 小试牛 ...

  7. (二)shell编程之变量定义与使用

    shell编程之变量定义与使用 SHELL编程模块课程目标 ① Shell的基本语法结构 如:变量定义.条件判断.循环语句(for.until.while).分支语句.函数和数组等: ② 基本正则表达 ...

  8. 掌握shell编程中数组的常见用法及示例

    From: http://www.embeddedlinux.org.cn/html/jishuzixun/201211/19-2386.html 给大家分享下数组的用法小例子,希望能给大家一点帮助. ...

  9. 轻松掌握shell编程中数组的常见用法及示例

    缘起:在老男孩进行linux培训shell编程教学中,发现不少水平不错的网友及同学对数组仍然很迷糊,下面就给大家分享下数组的用法小例子,希望能给大家一点帮助.其实SHELL的数组很简单,好用.我们学习 ...

最新文章

  1. keystone java,搭建KeystoneJS
  2. 注解处理器开发过程相关问题
  3. 【剑指offer】反转链表,C++实现(链表)
  4. Java 基本数据类型
  5. 【渝粤教育】国家开放大学2018年春季 3780-22T燃气设备操作与维护 参考试题
  6. Vuex在项目中使用
  7. 凌晨一点的粤海街道对抗来自美国的力量|湾区人工智能
  8. 聚宽 get_price 多个股票数据_上证指数(000001)股票历史数据,下载上证指数(000001历史数据_股票股市历史数据下载股票数据网...
  9. mySQL 2008安装MOF无法连接_SQL Server 2008安装失败,提示MOF编译器无法连接WMI服务器,该如何解决.谢谢!...
  10. python编写简易木马程序_中国骇客云教你使用Python编写木马程序
  11. 新浪微博分享遇到的心酸的问题
  12. GCD中dispatch_semaphore(信号量)的使用方法
  13. springboot学习中的错误
  14. vue 圆形 水波_vuejs 水波纹框架
  15. [转载]tensorflow二次开发
  16. 微软teams软件_如何在Microsoft Teams中创建和管理团队
  17. 计算机系统(1) 实验五 中断实验
  18. 【团体程序设计天梯赛-部分练习集】
  19. 目前应用最多的四种制图软件!
  20. 油烟净化器电场可以使用洗衣粉来清洗吗?

热门文章

  1. 前端必知必会--JSON.stringify()犀利的第三个参数
  2. 回调地狱解决方案之Promise
  3. 面试官问你“有什么问题问我吗?”,你该如何回答?
  4. webpack2.x 中文文档 翻译 之 出口Output
  5. bootstrap之排版类
  6. ubuntu下安装chromium及其pepperflash
  7. 150929.js过完
  8. enum to IEnumerableT
  9. UVa 1368 - DNA Consensus String
  10. struts2:多业务方法的处理(动态调用,DMI)