位置: IT常识 - 正文

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

发布时间:2023-12-26
今天小编将要为大家带了的是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是什么进程)

  • 回收站删除的文件怎么恢复手机(回收站删除的文件怎么恢复)(回收站删除的文件)

    回收站删除的文件怎么恢复手机(回收站删除的文件怎么恢复)(回收站删除的文件)

  • vivox70pro+怎么更换主题(vivox70pro怎么更改桌面图标样式)

    vivox70pro+怎么更换主题(vivox70pro怎么更改桌面图标样式)

  • 视频号直播上网课怎么投屏(视频号 开直播)

    视频号直播上网课怎么投屏(视频号 开直播)

  • 索尼xm3怎么连接蓝牙(索尼xm3怎么连接ps5)

    索尼xm3怎么连接蓝牙(索尼xm3怎么连接ps5)

  • lgd面板和ips面板的区别(ips lgd面板 ips nano 哪个好)

    lgd面板和ips面板的区别(ips lgd面板 ips nano 哪个好)

  • 小红书在哪里建群(小红书怎么建造群聊)

    小红书在哪里建群(小红书怎么建造群聊)

  • a1395是ipad第几代(a1395是ipad第几代尺寸)

    a1395是ipad第几代(a1395是ipad第几代尺寸)

  • 手机号导入包裹啥意思(手机号导入包裹怎么弄)

    手机号导入包裹啥意思(手机号导入包裹怎么弄)

  • 小米电脑正确密码却打不开(小米电脑正确密码忘记)

    小米电脑正确密码却打不开(小米电脑正确密码忘记)

  • 支付宝集五福只能集一个吗(支付宝集五福只能合成一次吗)

    支付宝集五福只能集一个吗(支付宝集五福只能合成一次吗)

  • 红米note5支持18w快充吗(红米note5支持5g网络吗)

    红米note5支持18w快充吗(红米note5支持5g网络吗)

  • 关闭了拼小圈朋友可不可以看到(关闭拼小圈朋友还能看到我的购买记录)

    关闭了拼小圈朋友可不可以看到(关闭拼小圈朋友还能看到我的购买记录)

  • 淘宝多少天不发货可以赔付(淘宝多少天不发货自动取消订单)

    淘宝多少天不发货可以赔付(淘宝多少天不发货自动取消订单)

  • 小米8为什么越充越少(小米8为什么好)

    小米8为什么越充越少(小米8为什么好)

  • 畅玩5x可以用电信卡吗(荣耀畅玩5x支持快充吗)

    畅玩5x可以用电信卡吗(荣耀畅玩5x支持快充吗)

  • 汇编语言包括哪几种(汇编语言包括哪三个部分)

    汇编语言包括哪几种(汇编语言包括哪三个部分)

  • oppo手机怎么设置主页时间(oppo手机怎么设置返回键)

    oppo手机怎么设置主页时间(oppo手机怎么设置返回键)

  • 华为手机振动强度调节(华为手机振动强弱设置)

    华为手机振动强度调节(华为手机振动强弱设置)

  • 华为免打扰怎么取消(华为免打扰怎么设置时间段)

    华为免打扰怎么取消(华为免打扰怎么设置时间段)

  • vivo怎么显示蓝牙电量(vivo怎么显示蓝牙)

    vivo怎么显示蓝牙电量(vivo怎么显示蓝牙)

  • 苹果x替换外貌啥意思(苹果x替换面容在哪里)

    苹果x替换外貌啥意思(苹果x替换面容在哪里)

  • 抖音美瞳特效在哪里(抖音美瞳特效在哪里找到)

    抖音美瞳特效在哪里(抖音美瞳特效在哪里找到)

  • qq最高等级是什么图标(qq最高等级是谁2021)

    qq最高等级是什么图标(qq最高等级是谁2021)

  • 拍抖音怎么添加音乐(拍抖音怎么添加歌词)

    拍抖音怎么添加音乐(拍抖音怎么添加歌词)

  • 苏宁如何分期(苏宁如何分期购买手机)

    苏宁如何分期(苏宁如何分期购买手机)

  • s.exe - s是什么进程 有什么用(lsass.exe是什么进程)

    s.exe - s是什么进程 有什么用(lsass.exe是什么进程)

  • 前端直接生成GIF动态图实践(前端生成docx)

    前端直接生成GIF动态图实践(前端生成docx)

  • 微服务网关Gateway实践总结(微服务网关作用)

    微服务网关Gateway实践总结(微服务网关作用)

  • 一次性劳务所得税怎么算
  • 汇兑损益一般是多少
  • 个人生产经营所得税
  • 制作费发票明细怎么填
  • 开发票产品名称
  • 税费返还如何处理
  • 商业用房怎么缴税
  • 汇总缴纳增值税的三级公司怎么汇总备案
  • 管理费用对所得收入影响
  • 劳动局仲裁支付的补偿怎么做账?
  • 个人所得税生产经营所得税率表2023
  • 增值税专票需要哪些开票信息
  • 工业企业税负率一般控制在多少?
  • 发票勾选平台显示不成功
  • 技术转让怎么算成本
  • 代开专票作废需要什么资料?
  • 分包发票怎么开对方可以差额纳税
  • 税收返还会计处理
  • 外账不能出现收据
  • 水电费计提和冲销
  • 基金公司管理费收入增值税
  • 公司注销对外投资股权有效吗
  • 现金流量表根据什么原则编制
  • 败诉赔偿如何支付
  • 残保金属于现金流量表中的哪一项
  • 个体工商户比如
  • 多交的增值税怎么处理
  • 发票金额大于实际支付金额如何报账
  • 固定资产少计提了怎么办
  • 宽带测速器在线测速
  • 企业内部股权划拨流程
  • 高新企业认定条件2019
  • windows10 电脑
  • 红冲以前年度暂估成本如何做账
  • mac怎么保存
  • wifi增强器1200m的是不是比较好
  • 不给佣金
  • 建筑公司结算会计
  • 资产负债表要点
  • 免交的增值税要交所得税吗
  • php输出语法
  • php与java区别
  • yolo object detection
  • video.js教程
  • 探索app下载
  • 文心一言中国版
  • 出口退税的一般程序
  • 应交增值税减免税额怎么结转
  • 长期待摊费用如何处理
  • 公司发放给员工的出差补助需要合并计算个税吗
  • python有public
  • 企业所得税成本核定
  • 固定资产清理的借贷方向
  • 软件研发费用怎么做账
  • 固定资产核销是资产损失吗
  • 一个月没钱
  • 融资租赁的会计处理方法举例子
  • 收到预收款开具发票如何入账
  • 出口转内销补交进口增值税时间
  • 公司向个人借款的会计分录怎么做
  • 小规模纳税人建筑服务预缴增值税
  • win10简单版
  • 镜的镜像截图
  • u盘装系统软件哪个好
  • win10的svchost干什么的
  • 微软补丁发布时间
  • linux 怎么样
  • 分布式队列秒杀活动
  • unity3d android
  • vue.js购物车
  • 获取input输入值
  • u3d unity3d
  • javascript添加元素
  • node react vue
  • 客户端名称 android-
  • python socket用法
  • android的r
  • 国税人事部门党建工作(税务局党建部门)
  • 深圳税务局实名注册
  • 吉林省电子税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号