windows环境下创建shell脚本并上传到linux中运行

#!/bin/bash - no such file or directory

# 在notepad++中将写好的文件转换为unix

image-20231214094907083

在Vim中查看文件编码

# 运行脚本
[root@master ~]# ./test.sh 
# 出现错误
-bash: ./test.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
# 查看内容
[root@master ~]# cat -A test.sh 
#!/bin/bash^M$
echo "Hello world!"[root@master ~]#
#编码错误
#把以\r结束的字符换成空白
[root@master ~]# sed -i 's/\r$//' test.sh

# 查看文件格式
:set ff
#查看文件编码
:set fileencoding
#修改文件格式和编码
:set ff=unix
:set fileencoding=utf-8

错误:

  #!/bin/bash - no such file or directory

原因

  Linux上的文件是忽略BOM的,因此在Linux上生成的文件也是不带BOM
  但在window下,windows记事本默认会给文件添加BOM头
  虽然肉眼是看不到BOM的,但在程序处理这些文件时,这些字符是能被识别到的
  所以看似正常的文件,程序处理却报错,以及window上看似正确的脚本在Linux下执行却报错

解决方案:

  方案1:在Linux上直接创建文件,编辑内容,Linux上生成的文件是没有BOM

  方案2:在window上进行处理,比如将文件拷贝至windows本地,使用notepad++按照如下方式进行转换,转换后再重新放到Linux上即可

posted @   ASini  阅读(197)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示