ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

执行shell脚本文件提示: bad substitution

2022-09-06 07:00:08  阅读:229  来源: 互联网

标签:脚本 shell month bad substitution id


问题描述

由于业务需要早上修改了一个固定需求加工逻辑的一个子查询,把修改后的 hivesql 封装成 shell 脚本后执行报错了,运行脚本最后一行提示如下:

       t1.service_type;: bad substitution

问题分析

经过查询了解到 bad substitution的字面意思,它的字面意思是“替换错误”的意思。这种错误的原因呢,通常是我们编写脚本时“{}”和“()”错误使用导致的。比如应该用“()”时,我们用成了“{}”;应该用“()”时,用成了“{}”。那么如何区分什么时候用什么类型的括号呢?${}中,大括号里放的是变量;$(commamd)里是执行command(即我们的命令或者一些运算),然后用它的输出代替$()

问题解决

今天修改的两个子查询中确实有一个引入了外部变量

    where month_id = '${month_id }'

原来这里引入变量的时候多了一个空格,修改如下

    where month_id = '${month_id}'

shell 脚本可以正常运行了

总结

这个空格足足影响了半个小时的工作时间,看来刚睡醒确实需要精神一下,另外自己的脚本需要进行检查之后在运行。

标签:脚本,shell,month,bad,substitution,id
来源: https://www.cnblogs.com/wdh01/p/16657682.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有