Shell脚本常见问题|学习笔记

简介: 快速学习Shell脚本常见问题

开发者学堂课程【Shell 脚本进阶:Shell脚本常见问题】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/799


Shell脚本常见问题


目录:

一、特殊字符问题

二、环境变量问题

三、如何排查问题

一、特殊字符问题

1不同操作系统脚本传输

2.从富文本复制代码

问题:在Windows系统中编辑的shell脚本,拷贝到Linux系统中,发现在每行的末尾会出现^M字符。

解决:使用dos2unix或sed直接替换

问题:脚本中存在一些不可打印的特殊字符 ,执行时会出现报错。

解决:使用cat -A直接查看并删除特殊字符;或od查看特殊字符的十六进制后sed替换

二、环境变量问题

Shell脚本在console中运行正常,通过计划任务的方式运行会出现异常。

通常,这种问题是环境变量导致的。crontab 不会缺省的从用户profile文件中读取环境变量参数。

解决:

(1)脚本中的命令(如java )使用绝对路径,这样就不需要依赖于环境变量

(2)在脚本的开头先加载环境变量

/etc/profile

~/ .bash_ _profile

三、如何排查问题

1、代码走读

(1)确定代码逻辑

(2)检查语法错误

(3)考虑异常处理

2、语法检测

(1)bash -n script.sh

3、跟踪运行

(1)bash -x script.sh

相关文章
|
存储 安全 数据安全/隐私保护
【计算机网络】第三章 数据链路层(集线器与交换机)
【计算机网络】第三章 数据链路层(集线器与交换机)
|
9月前
|
网络协议 Unix Linux
# 2个类轻松构建高效Socket通信库
本文介绍了一种通过两个类`EpollEventHandler`和`IEpollEvent`构建高效Socket通信库的方法。该库支持TCP、UDP和Unix域套接字,采用I/O多路复用技术(如epoll),提升并发处理能力。通过抽象基类和具体事件类的设计,简化了API使用,便于开发者快速上手。文章还提供了服务端与客户端的实例代码,展示其在实际项目中的应用效果。此Socket库适应嵌入式环境,功能定制性强,有助于减少外部依赖并提升维护效率。
277 96
# 2个类轻松构建高效Socket通信库
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
284 0
|
前端开发 JavaScript
前端vue:解决Invalid prop: type check failed for prop “model“. Expected Object, got Array问题
前端vue:解决Invalid prop: type check failed for prop “model“. Expected Object, got Array问题
前端vue:解决Invalid prop: type check failed for prop “model“. Expected Object, got Array问题
|
网络协议 安全 网络安全
常见的网络传输协议有几种
常见的网络传输协议涵盖多个层次,包括传输层(如TCP、UDP、SCTP)、应用层(如HTTP/HTTPS、FTP、SMTP、DNS、SSH)、网络层(如IP、ICMP、ARP)、数据链路层(如Ethernet、PPP、Wi-Fi)及安全协议(如SSL/TLS、IPSec)。这些协议各具特色,适用于不同场景,如TCP用于可靠传输,UDP适合实时应用,而HTTP/HTTPS则服务于网页浏览和数据交换。通过这些协议的协同工作,现代互联网和局域网得以实现多样化的应用和服务。
|
Ubuntu Docker 容器
docker容器保存和导入
docker容器保存和导入
301 0
并发编程之Callable方法的详细解析(带小案例)
并发编程之Callable方法的详细解析(带小案例)
267 0
|
存储 分布式计算 大数据
【大数据】什么是大数据技术?
【大数据】什么是大数据技术?
372 0
|
SQL 开发框架 数据可视化
ArcGIS Engine学习系列1 AE基础介绍
市面上AE教程大致到ArcGIS10.2,ESRI宣布从ArcGIS10.5开始便停止AE的更新,使用AO做开发,初学者可以在学习C#语言后,从AE入门,逐渐过度到AO。不同版本下AE数据类型数量Enums:枚举类型,用于实现一些定义的内容Structs:结构体Interfaces:接口Classes:类AE开发中,为了更好地管理COM对象,ESRI将这些COM对象放到不同的组件库中。
558 0
|
存储 C语言
C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数
C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数
1359 0
C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数