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相关推荐

  1. Linux中srch出现bash,ultraedit中shell脚本语法着色

    ultraedit中shell脚本语法着色 点击菜单"高级"-"配置",打开配置对话框.在导航一栏,点击"编辑器显示"----"语 ...

  2. VsCode shell脚本语法检查插件ShellCheck(shell检查、shell插件、shell语法检查、静态检查)

    像这种,很轻松给你检查出来: 并且告诉你如何修复: 还有网页版的:https://www.shellcheck.net/ 参考文章1:linux shell脚本 静态检查工具 shellcheck 简 ...

  3. Shell脚本语法2

    break和continue break[n]可以指定跳出几层循环,continue跳过本次循环步,没跳出整个循环. break跳出,continue跳过. 习题 1.把上面验证密码的程序修改一下,如 ...

  4. Shell 脚本语法

    条件测试:test  和  [ 命令 test 或 [ 可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C ...

  5. shell脚本语法基础汇总

    转载地址:http://blog.csdn.net/aggrelxf/article/details/8263110 单引 双引 反引用[] [[]] 将命令的输出读入一个变量中,可以将它放入双引号中 ...

  6. 【SHELL】 Linux SHELL 脚本语法及使用参考

    Linux下的SHELL脚本常以 *.sh 为后缀,和Windows下的批处理脚本 *.bat *.cmd功能一致,但是功能和语法都要更强大.SHELL是一门脚本语言.本文介绍SHELL的语法及用法. ...

  7. linux的shell脚本语法与C语言不同之一

    Linux的shell脚本和C语言有很多类似的地方. 比如有for循环,while等等. 但是具体的语句书写上是有区别的. 随时总结,现在给出目前的例子. if  [ -d /home/  ]; th ...

  8. Shell脚本语法小全

    非常感谢csdn其木王王子提供的特殊变量的讲解,和下面我实在找不到最先出处的提供大量例子的师傅,非常感谢 参数 输入语句 对谈式脚本read shell变量除了可以直接赋值或脚本传参外,还可以使用re ...

  9. 【Linux入门到精通系列讲解】shell脚本语法入门教程(看一篇就够了)

    文章目录 1 IF 2 IF-TEHN-ELSE 3 多步判断 4 FOR循环 5 WHILE循环 6 case语句 7 函数控制 1 IF #!/bin/bash #假如在/tep/abc文件夹 那 ...

最新文章

  1. mysql分库一个库和多个库_数据库分库后不同库之间的关联
  2. Linux|UNIX下LAMP环境的搭建及常见问题[连载4]
  3. 大数取余的原理和模板
  4. html5图像不停旋转,html5 canvas多个图像旋转
  5. mysql创建分区是否存在_mysql中如何判断是否支持分区
  6. 二分法在顺序排列的字典中查找单词(二分)
  7. 使用ClickOnce部署VS2005中的WinForm应用程序.(ZT)
  8. 雷军:电视机越大才越舒服!
  9. 路飞学成-Python爬虫实战密训-第3章
  10. 未能加载文件或程序集“Enyim.Caching”或它的某一个依赖项。未能验证强名称签名...
  11. 穿越迷宫的函数c语言,数据结构课外实践题库(26页)-原创力文档
  12. html.ex.day02
  13. Go 微服务开发框架 DMicro 的设计思路
  14. 腾讯首次攻破屏下指纹识别技术;苹果新Mac Pro最贵将卖到4.2万;Haxe 4.0发布 | 极客头条...
  15. 前端 vue 解决按1920*1080设计图做的页面适配屏幕缩放并适配4K屏
  16. Nginx -- SSL模块
  17. 基于springboot的茶叶销售商城网站
  18. 手把手教你,如何用Python做副业月入10000+!
  19. IBM Bluemix 中文公众版初体验
  20. 基于autojs pro的接码登录界面,演示了组件事件的挂接

热门文章

  1. iOS:如何在iphone、ipad上安装一些常用命令行命令
  2. (自适应手机端)pbootcms响应式企业通用网站模板
  3. 高德地图API和百度地图API哪个更适合开发者?
  4. .Net框架中的CLR,CTS,ClS的解释
  5. centos6.4下安装fetion
  6. 大型票务系统性能测试浅析
  7. AndroidStudio修改单行注释灰不拉基的颜色
  8. D3.js 绘制带圆角的矩形 + 带箭头的指示线
  9. 023 Rust死灵书之并发、竞争
  10. 2021牛客多校1——J:Journey of Railway Stations(线段树)