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 @ 2023-12-14 10:06  ASini  阅读(111)  评论(0编辑  收藏  举报