问题
Windows上面提交shell脚本,然后在Linux下检出容易出现脚本执行不了的情况(或者直接虚拟机拖拽拷贝),往往有以下2种原因:
① 文本格式不正确,因为Windows换行符格式和Linux的不兼容
② 脚本权限不对,因为拷贝过来的文件大概率跟当前用户和组的权限不匹配
解决
文本格式
文本格式不正确,因为Windows是使用Windows(CR LF)格式的,而Linux采用Unix(LF),bash终端一般识别不了前者,一旦部署到ARM Linux那也肯定出问题
- 尽量避免在Windows提交shell脚本:实际工作中很多人都喜欢用Windows做开发,尽管开发的是Linux应用
- 使用vim编辑器,输入命令
set ff查看脚本格式,如果是dos格式,则输入命令set ff=unix即可纠正过来 - 可以使用notepad++,通过右下角的状态栏那里可以查看文本格式,右键切换即可
文本权限
先看看权限
1 | ls -l |
一般脚本需要添加用户可执行权限
1 | sudo chmod u+x demo.sh |
执行
1 | ./demo.sh |