Shell脚本语法3.21
1.数值运算
表达式中,数字和运算符之间要有空格,出现在语句中要加反引号
a=11 b=22
(1) 加:dd=$(exper $a + $b)运算符两边必须有空格
Let c=$a+$b
c=$[$a+$b]
c=$(($a+$b))
c=`expr $a + $b`
乘:expr 1 \* 3
例:echo `expr 1 + 3`
(2) 两种运行方式的不同
1> sh hello.sh 不会获取脚本中的变量
2> source hello.sh会获得脚本中的变量
2.条件判断命令 test
真返回0,假返回1
(1) 整数,比较运算符
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
-eq 等于
-ne 不等于
例:test 1 –lt 4 判断1<4
echo $? 判断上条语句的执行结果
等价形式 [ 1 –lt 4 ]
(2) 文件测试
-e 文件存在为真
-f 存在且是普通文件
-d 存在且是目录
-s 存在且字节数大于零
-r 存在且可读
-w 存在且可写
-x 存在且可执行
例:判断mydoc是否有目录
test –d “mydoc”
(3) 字符串测试
test s 字符串s非空
test s1 = s2 判断s1=s2(等号两边加空格)
test s1 != s2 判断s1不等于s2
test –z s 判断s的长度为0,即空串
test –n s 判断s长度>0
(4) 其他参数
-a 逻辑与
-o 逻辑或
! 逻辑非
3. 控制流程
(1)if 语句,if [判断];then (写在一行) if与判断之间一定有空格
例: if [ $# -eq 0 ]
then
echo “输入了0个参数”
elif [ $# -gt 1 ]
then echo “输入了多个参数”
else echo “输入了1个参数”
fi
(3)case语句
每个分支条件后必须以两个分号结尾
case $变量名称 in
“第一个变量内容”) 程序段;;
“第二个变量内容) 程序段;;
*) exit 1;; (*表示其他值)
esac
例:case “$#”in
0) echo “输入了0个参数”;;
1) echo “输入了1个参数”;;
*)echo “输入了多个参数”;;
esac
(4)循环结构
1>for i in {1..9}大括号中不能有变量
for i in `seq 1 9` (seq命令:产生1-9的数字序列)
do
echo `expr $i \* 10` (或echo $(expr $i \* 10))
done
2> while 语句
while [判断]
do
程序段
done
until [判断]
do
程序段
done
例:求1到100的和
i=1
sum=0
while [ $i –le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done (表示结束)
echo $sum
break和continue可以接受参数
break 2 表示跳出两层循环
3> forvar in con1 con2 con3 …
do
程序段
done
for((初始值;限制值;运行步阶))
do
程序段
done
4.函数的定义
1> 定义格式:
函数名 (){
命令1
. . .
}
2>所有函数在使用前必须定义,放在脚本的开始部分
3>调用时仅使用函数名即可
4>参数可以传递给函数
fname arg1 arg2
fname()
{
echo $1,$2; 访问参数1和参数2
echo “$@”; 以列表的方式一次性打印所有参数
echo “$*”; 类似于$@,参数被作为单个实体
return 0;
}
5> -p:指定读取值时的提示符;
read–p“please intput a num:”num
可以从键盘上读取多个变量的值,用户输入数据时,以空格或者Tab键作为分隔。
如果输入的数据个数不够,则从左到右对应赋值,没有输入的变量为空;
如果输入的数据个数超了,则从左到右对应赋值,最后一个变量被赋予剩余的所有数据。
5.数组
(1) 数组定义
array_var=(1 2 3 4 5 6) (索引从0开始)
索引-值方式:
array_var[0]=”test1”
array_var[1]=”test2”
array_var[2]=”test3”
array_var[3]=”test4”
(2) 打印出特定索引值的数组元素内容
echo${array_var[$index]}
(3)以清单的形式打印出所有值
echo ${array_var[*]}
或 echo ${array_var[@]}
(4)打印数组长度
echo ${#array_var[*]}
6.关联数组
可以用任何字符作为下标,使用前用declare –Aarray进行声明
${!array[*]} 取关联数组所有键
${!array[@]}取关联数组所有键
${array[*]}取关联数组所有值
${array[@]} 取关联数组所有值
${#array[*]}关联数组的长度
${#array[@]}关联数组的长度
Shell脚本语法3.21相关推荐
- Linux中srch出现bash,ultraedit中shell脚本语法着色
ultraedit中shell脚本语法着色 点击菜单"高级"-"配置",打开配置对话框.在导航一栏,点击"编辑器显示"----"语 ...
- VsCode shell脚本语法检查插件ShellCheck(shell检查、shell插件、shell语法检查、静态检查)
像这种,很轻松给你检查出来: 并且告诉你如何修复: 还有网页版的:https://www.shellcheck.net/ 参考文章1:linux shell脚本 静态检查工具 shellcheck 简 ...
- Shell脚本语法2
break和continue break[n]可以指定跳出几层循环,continue跳过本次循环步,没跳出整个循环. break跳出,continue跳过. 习题 1.把上面验证密码的程序修改一下,如 ...
- Shell 脚本语法
条件测试:test 和 [ 命令 test 或 [ 可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C ...
- shell脚本语法基础汇总
转载地址:http://blog.csdn.net/aggrelxf/article/details/8263110 单引 双引 反引用[] [[]] 将命令的输出读入一个变量中,可以将它放入双引号中 ...
- 【SHELL】 Linux SHELL 脚本语法及使用参考
Linux下的SHELL脚本常以 *.sh 为后缀,和Windows下的批处理脚本 *.bat *.cmd功能一致,但是功能和语法都要更强大.SHELL是一门脚本语言.本文介绍SHELL的语法及用法. ...
- linux的shell脚本语法与C语言不同之一
Linux的shell脚本和C语言有很多类似的地方. 比如有for循环,while等等. 但是具体的语句书写上是有区别的. 随时总结,现在给出目前的例子. if [ -d /home/ ]; th ...
- Shell脚本语法小全
非常感谢csdn其木王王子提供的特殊变量的讲解,和下面我实在找不到最先出处的提供大量例子的师傅,非常感谢 参数 输入语句 对谈式脚本read shell变量除了可以直接赋值或脚本传参外,还可以使用re ...
- 【Linux入门到精通系列讲解】shell脚本语法入门教程(看一篇就够了)
文章目录 1 IF 2 IF-TEHN-ELSE 3 多步判断 4 FOR循环 5 WHILE循环 6 case语句 7 函数控制 1 IF #!/bin/bash #假如在/tep/abc文件夹 那 ...
最新文章
- mysql分库一个库和多个库_数据库分库后不同库之间的关联
- Linux|UNIX下LAMP环境的搭建及常见问题[连载4]
- 大数取余的原理和模板
- html5图像不停旋转,html5 canvas多个图像旋转
- mysql创建分区是否存在_mysql中如何判断是否支持分区
- 二分法在顺序排列的字典中查找单词(二分)
- 使用ClickOnce部署VS2005中的WinForm应用程序.(ZT)
- 雷军:电视机越大才越舒服!
- 路飞学成-Python爬虫实战密训-第3章
- 未能加载文件或程序集“Enyim.Caching”或它的某一个依赖项。未能验证强名称签名...
- 穿越迷宫的函数c语言,数据结构课外实践题库(26页)-原创力文档
- html.ex.day02
- Go 微服务开发框架 DMicro 的设计思路
- 腾讯首次攻破屏下指纹识别技术;苹果新Mac Pro最贵将卖到4.2万;Haxe 4.0发布 | 极客头条...
- 前端 vue 解决按1920*1080设计图做的页面适配屏幕缩放并适配4K屏
- Nginx -- SSL模块
- 基于springboot的茶叶销售商城网站
- 手把手教你,如何用Python做副业月入10000+!
- IBM Bluemix 中文公众版初体验
- 基于autojs pro的接码登录界面,演示了组件事件的挂接