shell编程模块课程目标(下)

简介: shell编程模块课程目标

三、简单四则运算


算术运算:默认情况下,shell就只能支持简单的整数运算


运算内容:加(+)、减(-)、乘(*)、除(/)、求余数(%)


1. 四则运算符号


表达式 举例
$(( )) echo $((1+1))
$[ ] echo $[10-5]
expr expr 10 / 5
let n=1;let n+=1 等价于 let n=n+1



2.了解i++和++i

对变量的值的影响


[root@MissHou~]#i=1[root@MissHou~]#leti++[root@MissHou~]#echo$i2[root@MissHou~]#j=1[root@MissHou~]#let++j[root@MissHou~]#echo$j2


对表达式的值的影响

[root@MissHou~]#unsetij[root@MissHou~]#i=1;j=1[root@MissHou~]#letx=i++先赋值,再运算[root@MissHou~]#lety=++j先运算,再赋值[root@MissHou~]#echo$i2[root@MissHou~]#echo$j2[root@MissHou~]#echo$x1[root@MissHou~]#echo$y2


四、扩展补充


1. 数组定义

㈠ 数组分类

普通数组:只能使用整数作为数组索引(元素的下标)

关联数组:可以使用字符串作为数组索引(元素的下标)

㈡ 普通数组定义

一次赋予一个值

数组名[索引下标]=array[0]=v1array[1]=v2array[2]=v3array[3]=v4


一次赋予多个值

数组名=(值1值2值3 ...)
array=(var1var2var3var4)
array1=(`cat/etc/passwd`)      将文件中每一行赋值给array1数组array2=(`ls/root`)
array3=(harryamyjack"Miss Hou")
array4=(1234"hello world" [10]=linux)


㈢ 数组的读取

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


㈣ 关联数组定义

①首先声明关联数组

declare-Aasso_array1declare-Aasso_array2declare-Aasso_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-Adeclare-Aasso_array1='([php]="three" [java]="two" [linux]="one" )'declare-Aasso_array2='([name3]="amy" [name2]="jack" [name1]="harry" [name4]="Miss Hou" )'


获取关联数组值

#echo${asso_array1[linux]}
one#echo${asso_array1[php]}
three#echo${asso_array1[*]}
threetwoone#echo${!asso_array1[*]}
phpjavalinux#echo${#asso_array1[*]}
3#echo${#asso_array2[*]}
4#echo${!asso_array2[*]}
name3name2name1name4


其他定义方式

[root@MissHoushell05]#declare-Abooks[root@MissHoushell05]#letbooks[linux]++[root@MissHoushell05]#declare-A|grepbooksdeclare-Abooks='([linux]="1" )'[root@MissHoushell05]#letbooks[linux]++[root@MissHoushell05]#declare-A|grepbooksdeclare-Abooks='([linux]="2" )'


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%%.*}


以下了解,自己完成

替换:///1015echo${url/ao/AO}
1017echo${url//ao/AO}   贪婪替换替代:- :-+:+1019echo${abc-123}
1020abc=hello1021echo${abc-444}
1022echo$abc1024abc=1025echo${abc-222}
${变量名-新的变量值} 或者${变量名=新的变量值}
变量没有被赋值:会使用“新的变量值“替代变量有被赋值(包括空值):不会被替代1062echo${ABC:-123}
1063ABC=HELLO1064echo${ABC:-123}
1065ABC=1066echo${ABC:-123}
${变量名:-新的变量值} 或者${变量名:=新的变量值}
变量没有被赋值或者赋空值:会使用“新的变量值“替代变量有被赋值:不会被替代1116echo${abc=123}
1118echo${abc:=123}
[root@MissHou~]#unsetabc[root@MissHou~]#echo${abc:+123}
[root@MissHou~]#abc=hello[root@MissHou~]#echo${abc:+123}
123[root@MissHou~]#abc=[root@MissHou~]#echo${abc:+123}
${变量名+新的变量值}
变量没有被赋值或者赋空值:不会使用“新的变量值“替代变量有被赋值:会被替代[root@MissHou~]#unsetabc[root@MissHou~]#echo${abc+123}
[root@MissHou~]#abc=hello[root@MissHou~]#echo${abc+123}
123[root@MissHou~]#abc=[root@MissHou~]#echo${abc+123}
123${变量名:+新的变量值}
变量没有被赋值:不会使用“新的变量值“替代变量有被赋值(包括空值):会被替代[root@MissHou~]#unsetabc[root@MissHou~]#echo${abc?123}
-bash: abc: 123[root@MissHou~]#abc=hello[root@MissHou~]#echo${abc?123}
hello[root@MissHou~]#abc=[root@MissHou~]#echo${abc?123}
${变量名?新的变量值}
变量没有被赋值:提示错误信息变量被赋值(包括空值):不会使用“新的变量值“替代[root@MissHou~]#unsetabc[root@MissHou~]#echo${abc:?123}
-bash: abc: 123[root@MissHou~]#abc=hello[root@MissHou~]#echo${abc:?123}
hello[root@MissHou~]#abc=[root@MissHou~]#echo${abc:?123}
-bash: abc: 123${变量名:?新的变量值}
变量没有被赋值或者赋空值时:提示错误信息变量被赋值:不会使用“新的变量值“替代说明:?主要是当变量没有赋值提示错误信息的,没有赋值功能


相关文章
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
26天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
Shell
Shell编程(下)
Shell编程(下)
92 1
|
1月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
41 1
|
1月前
|
Shell Linux 开发工具
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
70 12
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
2月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
45 12
|
2月前
|
Shell Linux
Shell 编程 编写hello word
Shell 编写hello word
52 5
下一篇
无影云桌面