位置: IT常识 - 正文

shell语法检查模式详解(shell检查变量是否为空)

编辑:rootadmin
今天小编将要为大家带了的是shell语法检查模式详解;希望会对大家有帮助,有需要的朋友一起去看看吧... 17-02-13

推荐整理分享shell语法检查模式详解(shell检查变量是否为空),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:shell基本语法,检测shell脚本语法错误的命令,shell检查语法错误,检查shell脚本有无语法错误,shell 语法检查,检测shell脚本语法错误的命令,shell检查语法错误,shell 语法检查,内容如对您有帮助,希望把文章链接给更多的朋友!

启用 verbose 调试模式

在进入本指导的重点之前,让我们简要地探索下verbose 模式。它可以用 -v 调试选项来启用,它会告诉 shell 在读取时显示每行。要展示这个如何工作,下面是一个示例脚本来批量将 PNG 图片转换成 JPG 格式。

将下面内容输入(或者复制粘贴)到一个文件中。

#!/bin/bash

#convert

for image in *.png; do

convert "$image" "${image%.png}.jpg"

echo "image $image converted to ${image%.png}.jpg"

done

exit 0

接着保存文件,并用下面的命令使脚本可执行:

$ chmod +x script.sh

我们可以执行脚本并显示它被 Shell 读取到的每一行:

$ bash -v script.sh

在 Shell 脚本中启用语法检查调试模式

使用 -n 激活语法检查模式

它会让 shell 读取所有的命令,但是不会执行它们,它(shell)只会检查语法。一旦 shell 脚本中发现有错误,shell 会在终端中输出错误,不然就不会显示任何东西。

激活语法检查的命令如下:

$ bash -n script.sh

因为脚本中的语法是正确的,上面的命令不会显示任何东西。所以,让我们尝试删除结束 for 循环的 done 来看下是否会显示错误:

下面是修改过的含有 bug 的批量将 png 图片转换成 jpg 格式的脚本。

#!/bin/bash

#script with a bug

#convert

for image in *.png; do

convert "$image" "${image%.png}.jpg"

echo "image $image converted to ${image%.png}.jpg"

exit 0

保存文件,接着运行该脚本并执行语法检查:

shell语法检查模式详解(shell检查变量是否为空)

$ bash -n script.sh

从上面的输出中,我们看到我们的脚本中有一个错误,for 循环缺少了一个结束的 done 关键字。shell 脚本从头到尾检查文件,一旦没有找到它(done),shell 会打印出一个语法错误:

script.sh: line 11: syntax error: unexpected end of file

我们可以同时结合 verbose 模式和语法检查模式:

$ bash -vn script.sh

我们还可以通过修改脚本的首行来启用脚本检查

如下面的例子:

#!/bin/bash -n

#altering the first line of a script to enable syntax checking

#convert

for image in *.png; do

convert "$image" "${image%.png}.jpg"

echo "image $image converted to ${image%.png}.jpg"

exit 0

如上所示,保存文件并在运行中检查语法:

$ ./script.sh

script.sh: line 12: syntax error: unexpected end of file

此外,我们可以用内置的 set 命令来在脚本中启用调试模式。

下面的例子中,我们只检查脚本中的 for 循环语法。

#!/bin/bash

#using set shell built-in command to enable debugging

#convert

#enable debugging

set -n

for image in *.png; do

convert "$image" "${image%.png}.jpg"

echo "image $image converted to ${image%.png}.jpg"

#disable debugging

set +n

exit 0

再一次保存并执行脚本:

$ ./script.sh

总的来说,我们应该保证在执行 Shell 脚本之前先检查脚本语法以捕捉错误。

本文链接地址:https://www.jiuchutong.com/zhishi/278771.html 转载请保留说明!

上一篇:iconfig.exe进程是什么文件的 iconfig进程查询(icon files)

下一篇:dwm.exe是什么进程?dwm.exe为什么运行?dwm.exe图文介绍(dwmexe是什么进程)

  • 中国银行下载的征信报告保存在哪里(中国银行下载的征信报告找不到华为手机)

    中国银行下载的征信报告保存在哪里(中国银行下载的征信报告找不到华为手机)

  • steam截图快捷键(steam截图快捷键设置)

    steam截图快捷键(steam截图快捷键设置)

  • 小米8支持多少w快充啊(小米8支持多少瓦充电器)

    小米8支持多少w快充啊(小米8支持多少瓦充电器)

  • 华为手机怎么截屏所有的信息(华为手机怎么截取视频的一部分)

    华为手机怎么截屏所有的信息(华为手机怎么截取视频的一部分)

  • 充电宝第一次用是虚电(充电宝第一次用需要注意什么)

    充电宝第一次用是虚电(充电宝第一次用需要注意什么)

  • 华为手机微信聊天记录怎么恢复(华为手机微信聊天怎么隐藏)

    华为手机微信聊天记录怎么恢复(华为手机微信聊天怎么隐藏)

  • seagate是什么硬盘(seagate硬盘有什么用)

    seagate是什么硬盘(seagate硬盘有什么用)

  • excel2010工作簿的默认扩展名是(Excel2010工作簿的最小组成单位是单元格)

    excel2010工作簿的默认扩展名是(Excel2010工作簿的最小组成单位是单元格)

  • 华为mate30微信指纹支付怎么设置(华为mate30微信指纹怎么开)

    华为mate30微信指纹支付怎么设置(华为mate30微信指纹怎么开)

  • 计算工具发展的四个阶段(计算工具发展的三个阶段)

    计算工具发展的四个阶段(计算工具发展的三个阶段)

  • 手机自动拍照怎么设置(vivo手机怎么自动拍照)

    手机自动拍照怎么设置(vivo手机怎么自动拍照)

  • 网络卡顿是路由器的原因吗(网络卡顿是路由器的问题还是网络的问题)

    网络卡顿是路由器的原因吗(网络卡顿是路由器的问题还是网络的问题)

  • 电脑远程控制连接不上是怎么回事(电脑远程控制连接不上怎么办)

    电脑远程控制连接不上是怎么回事(电脑远程控制连接不上怎么办)

  • auxln接口干嘛用的(何为aux接口)

    auxln接口干嘛用的(何为aux接口)

  • 腾讯微云vip是干啥的(腾讯微云永久会员)

    腾讯微云vip是干啥的(腾讯微云永久会员)

  • 微信昵称能不能查到人(微信昵称能不能设置成动态的)

    微信昵称能不能查到人(微信昵称能不能设置成动态的)

  • 华为nova3i宽度(华为nova3i机身尺寸)

    华为nova3i宽度(华为nova3i机身尺寸)

  • 手机可以开通网上银行吗(手机可以开通网银怎么开通)

    手机可以开通网上银行吗(手机可以开通网银怎么开通)

  • 怎样生成目录(wps怎样生成目录页)

    怎样生成目录(wps怎样生成目录页)

  • 手提电脑怎么强制关机(手提电脑配置怎么选)

    手提电脑怎么强制关机(手提电脑配置怎么选)

  • ppt如何超链接多张幻灯片(如何超链接多张ppt)

    ppt如何超链接多张幻灯片(如何超链接多张ppt)

  • 为什么whatsup显示网络故障(what为什么要加撇s)

    为什么whatsup显示网络故障(what为什么要加撇s)

  • mq752ll a是什么版本(ml752cha是什么版本)

    mq752ll a是什么版本(ml752cha是什么版本)

  • 探探和陌陌有什么区别(探探和陌陌什么关系)

    探探和陌陌有什么区别(探探和陌陌什么关系)

  • 快手通讯录好友怎么删(快手通讯录好友怎么删除不掉)

    快手通讯录好友怎么删(快手通讯录好友怎么删除不掉)

  • 荣耀20i呼吸灯在哪(荣耀20呼吸灯一直红色)

    荣耀20i呼吸灯在哪(荣耀20呼吸灯一直红色)

  • 怎么不接收微信群消息(怎么不接收微信朋友圈点赞信息)

    怎么不接收微信群消息(怎么不接收微信朋友圈点赞信息)

  • win7纯净版系统kb2670838补丁安装失败的解决方法(win7纯净版系统之家)

    win7纯净版系统kb2670838补丁安装失败的解决方法(win7纯净版系统之家)

  • 增值税纳税申报时间
  • 年报的资产负债率在哪里
  • 企业的书报费应计入销售费用
  • 营业收入净额是营业总收入吗
  • 全年交多少税可以退
  • 外经证错了已经交了税怎么办
  • 收到0税率发票是否可以给对方开6税率发票
  • 个体户自有厂房怎么申请
  • 短期薪酬是会计科目么
  • 高速路费电子发票怎么打印
  • 销售加工费怎么做账务处理
  • 关于外债利息的规定
  • 期初数录错了怎么改
  • 商贸企业加工费票计入什么科目
  • 个人承包是什么意思
  • 公司主要业务介绍
  • 政府回收土地要交土地增值税吗
  • 企业所得税季报怎么申报
  • 电子账本excel模板
  • 发票开了收不到钱
  • 公司股东和自然人的区别
  • 转让无形资产的所有权计入什么科目
  • 交易性金融资产属于什么科目
  • 支付宝花呗服务费收费标准
  • 穿墙路由器怎么选择
  • 发财树怎么修剪枝叶视频教程
  • php脚本工作流程
  • 航空业燃油附加率是多少
  • 增值税留抵退税怎么操作
  • 调整以前年度少计提的工资
  • php 性能优化
  • 收到某单位投入一批原材料
  • 员工报销发票怎么做账
  • 发票查真伪是什么意思
  • 报销人和收款人不一致
  • 稽查增值税跨年了销项税额如何转出
  • 进口增值税抵扣期限
  • 非货币性资产交换和债务重组的区别
  • 小规模超500万升一般纳税人规定
  • 融资租赁车辆过户给个人
  • 考试费开什么发票税目
  • php __get()
  • php跳转到指定网页代码
  • Discus X 3 门户改造熊掌号网页教程
  • 小规模开工程款几个点
  • 增值税专用发票的税率是多少啊
  • 所得税交多了怎么留抵
  • 营改增后,建筑行业与供应商签合同才怎样签没风险?
  • 房地产中介公司排名
  • 预交一年的房租怎么做账
  • 工程没钱也没有工资
  • 员工福利费怎么写分录
  • win10开机出现onekey ghost
  • 如何使用搜狗拼音输入法
  • 设置ubuntu
  • ubuntu命令行中文乱码怎么解决
  • dnssne是什么意思
  • centos7文件路径
  • win7控制面板有哪些功能
  • linux源码安装软件的方法介绍
  • win10注册不了账号
  • 如何在win7电脑上添加新的打印机
  • opensuse怎么安装软件
  • ExtJs3.0中Store添加 baseParams 的Bug
  • 如何删掉win7系统
  • jquery validation
  • 批处理是什么意思
  • javascript详细介绍
  • Android spinner 的使用
  • 跑马灯 css
  • js dom操作方法
  • 如何用u盘重装电脑系统
  • 消费税由消费者承担吗
  • 同业借款的主要用途
  • 山东税务是干什么的
  • 国家税务总局39号文
  • 山东省地方税务局公告2018年第6号
  • 2021年留抵退税可以退2019年的吗
  • 中税网讲师
  • 临沂市2020年居民燃气价格
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设