eval:  告知shell取出eval的参数,重新运算求出参数的内容。
cat: 把一个或者多个文件(或者标准输入)连接在一起,并标准输出。(Concatenate FILE(s), or standard input, to standard output.)

cat命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示。它常与重定向符号配合使用。cat是Concatenate的缩写。

echo:显示文字。

sed用正则表达式逐行编辑file

sed: 批量文件处理。

例如 train DeepLab的prepare_voc12_data_lists.sh中的如下两句

 sed -i 's/JPEGImages/images_orig/g' $FILE_PATHsed -i 's/SegmentationClassAug/labels_orig/g' $FILE_PATH

意思就是将FILE_PATH文件中每行的JPEGImages替换为Images_orig,将SegmentationClassAug替换为labels_orig.

如何调试Shell脚本
1) 检查语法错误:
一般来说我们可以通过修改shell脚本的源代码,令其输出相关的调试信息来定位错误,那有没有不修改源代码来调试shell脚本的方法呢?答案就是使用shell的执行选,下面是一些常用选项的用法:
-n 只读取shell脚本,但不实际执行
-x 进入跟踪方式,显示所执行的每一条命令
-c "string" 从strings中读取命令

“-n”可用于测试shell脚本是否存在语法错误,但不会实际执行命令。在shell脚本编写完成之后,实际执行之前,首先使用“-n”选项来测试脚本是否存在语法错误是一个很好的习惯。因为某些shell脚本在执行时会对系统环境产生影响,比如生成或移动文件等,如果在实际执行才发现语法错误,您不得不手工做一些系统环境的恢复工作才能继续测试这个脚本。

“-c”选项使shell解释器从一个字符串中而不是从一个文件中读取并执行shell命令。当需要临时测试一小段脚本的执行结果时,可以使用这个选项,如下所示:
sh -c 'a=1;b=2;let c=$a+$b;echo "c=$c"'

"-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。

2) 调试工具-bashdb
使用shell调试器bashdb,这是一个类似于GDB的调试工具,可以完成对shell脚本的断点设置,单步执行,变量观察等许多功能。

使用bashdb进行debug的常用命令
1.列出代码和查询代码类:
l   列出当前行以下的10行
-   列出正在执行的代码行的前面10行
.   回到正在执行的代码行
w  列出正在执行的代码行前后的代码
/pat/  向后搜索pat
?pat?向前搜索pat

2.Debug控制类:
h  帮助
help 命令  得到命令的具体信息
q  退出bashdb
x 算数表达式  计算算数表达式的值,并显示出来
!!空格Shell命令 参数  执行shell命令
使用bashdb进行debug的常用命令(cont.)
控制脚本执行类:
n   执行下一条语句,遇到函数,不进入函数里面执行,将函数当作黑盒
s n  单步执行n次,遇到函数进入函数里面
b 行号n  在行号n处设置断点
del 行号n 撤销行号n处的断点
c 行号n 一直执行到行号n处
R  重新启动
Finish 执行到程序最后
cond n expr 条件断点

Shell脚本语法小记相关推荐

  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. Shell脚本语法3.21

    1.数值运算 表达式中,数字和运算符之间要有空格,出现在语句中要加反引号 a=11 b=22 (1)   加:dd=$(exper $a + $b)运算符两边必须有空格        Let c=$a ...

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

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

最新文章

  1. Android报错:java.lang.IllegalArgumentException: Surface was abandoned
  2. 【概念信息】成本中心计划
  3. 那些年我在CSDN追过的安全白帽师傅,respect
  4. c++的构造函数初始化列表
  5. java 为什么需要常量池 1
  6. 工作147:外部that
  7. SpringBoot怎么直接访问templates下的html页面
  8. 扩展BootstrapTable的treegrid功能
  9. lucene3.0中使用MultiFieldQueryParser多字段查找
  10. 带你理解 Hanoi 汉诺塔递归算法
  11. java lua脚本_在Java中使用Lua脚本语言
  12. 小学生刚学计算机时先学什么,浅谈小学生应如何学习电脑
  13. 支付业务与技术架构学习总结(10)——第三方支付账务系统论述
  14. vue.js3D立方体旋转播放特效
  15. Matlab论文插图绘制模板第69期—带误差棒的折线图(Errorbar)
  16. DRM系列(7)之drmModeAtomicCommit底层流程
  17. QT 系列博客:为什么要用QT?
  18. unity3D 移动平台性能优化
  19. moodle基本安装、配置和迁移
  20. 完美高性能遥感数据图形工作站方案

热门文章

  1. 太阳直射点纬度计算公式_高中地理——每日讲1题(太阳直射点、太阳高度角、太阳视运动)...
  2. Linux驱动开发——正点原子IMX6ULL核心板ADS1256驱动开发
  3. LTE/LTE-Advanced 第2章 网络架构
  4. 维京小队3dm中文版|维京小队中文免安装版
  5. 类似零基础学python的小说_就像看小说一样,让你一个小时学会Python零基础「强烈推荐」...
  6. DC-DC升压芯片MP9185
  7. linux改-文件夹名称,linux修改文件夹名字
  8. 初步学习网站分析工具
  9. 关于输入非负数求相加之和的程序:
  10. 青果教务系统API(Java版)