【Linux】Windows编写的shell语言在乌班图中运行失败的几点注意

Windows系统编写的sh文件,常常在Linux中运行会出现各种小问题,以下总结的几点分享给小伙伴:

一,shell语句:

#!/bin/bash
configs=( 
"stf/all_stf_phone.json"
)
for config in "${configs[@]}" ; do
python stf-connect.py -c $config
./make_phone_connect.sh
sleep 5
done

第一种情况:Linux运行报错:command not found:

原因在Linux环境,只有只读权限,故出现command not found , 或是bin文件夹的内容是否非空 , 在
执行sh文件时,可以尝试 “./文件名.sh” ,无需加sudo;
另一种情况:执行文件无权限访问,出现permission denied:
需要在运行文件前执行:chmod 777 filename.sh

第二种情况:Linux中执行.sh脚本,异常:

/bin/sh^M: bad interpreter: No such file or directory。

原因是;Linux中无法识别Windows中的格式;
通过vi <sh文件名>,执行 :set ff 查看文件的格式,若 文件名称展示为:fileformat=dos
需要将格式转换为Linux , 执行:set ff=unix , 保存并退出 ,:wq

第三种情况:格式问题出现:-bash: ./xxx.sh: /bin/sh^M: bad interpreter: No such file or directory

原因:在windows下编写的脚本文件,放到Linux中无法识别格式
可能有些小伙伴通过第二种情况就已经解决了,或者有些人没有真正的解决~
解决办法:
(1)通过指令:sed -i 's/^M$//' xxxxxxx.sh,上面的指令会把 xxxxxxx.sh 中的 ^M 替换成空白!
且保存退出即可;
(2)若还是不能够解决问题,直接使用dos2unix命令修改:
	首先安装模块:sudo apt-get install tofrodos
	安装完成,执行shell代码:
	dos2unix test.sh 
	此时输出:dos2unix: converting file test.sh to UNIX format ... 
 	如果 ^M较多可以多输入几次,修改完后再次执行./xxxx.sh 即可;

第四种情况:sh脚本编辑可能报出.swp等等相关的错误问题:
Linux系统中swp文件介绍:

vim中的swp是swap的简写,其实它是个隐藏文件,在编辑文件时产生。起备份内容的作用,
临时的交换文件。类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间
虚拟成内存使用,从而解决内存容量不足的情况。
Linux中sh文件执行正常保存退出操作,则此文件自动删除,不会出现swp文件报警错误提示。

它的解决办法也很简单,其实通过博客相关的搜索肯定是有很多相同的解决办法~
解决方法:
vi -r xxx.c

2.非常规退出时
解决方法:
执行删除swp文件:rm -rf xxx.swp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值