原文地址::https://blog.csdn.net/ouyang_peng/article/details/86488451
相关文章
1、解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题----https://blog.csdn.net/liuqiyao_01/article/details/41542101
一、问题描述
我在Windows 10 系统下编辑了一个发送消息到企业微信的shell脚本文件,然后copy到了远程的Linux服务器,当运行的时候报错了。如下所示:
root@ubuntu116:/data/gitlabData/auto_back_shell# ./qiyewechat-notifier.sh
-bash: ./qiyewechat-notifier.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
root@ubuntu116:/data/gitlabData/auto_back_shell#
二、错误原因
这个文件在Windows 下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有 多出来的\r。
三、修改错误
使用指令sed -i 's/\r$//' xxxxxxx.sh,上面的指令会把 xxxxxxx.sh 中的\r 替换成空白!
实操一下:
root@ubuntu116:/data/gitlabData/auto_back_shell# sed -i 's/\r$//' qiyewechat-notifier.sh
您在 /var/mail/root 中有新邮件
root@ubuntu116:/data/gitlabData/auto_back_shell# ./qiyewechat-notifier.sh -h
./qiyewechat-notifier.sh: 非法选项 -- h
Usage:
qiyewechat.sh [-u USER] [-t TITLE] [-c CONTENT] [-d DETAIL] [-p PICTURE]
Description:
USER, 用户.
TITLE, 标题.
CONTENT, 内容.
DETAIL, 细节.
PICTURE, 图片.
root@ubuntu116:/data/gitlabData/auto_back_shell#
如上所示,执行了下面的脚本之后,
sed -i 's/\r$//' qiyewechat-notifier.sh
1
qiyewechat-notifier.sh就可以正常运行了!
四、附录
qiyewechat-notifier.sh的部分代码如下所示:
#!/bin/bash
#用法提示
usage() {
echo "Usage:"
echo " qiyewechat.sh [-u USER] [-t TITLE] [-c CONTENT] [-d DETAIL] [-p PICTURE]"
echo "Description:"
echo " USER, 用户."
echo " TITLE, 标题."
echo " CONTENT, 内容."
echo " DETAIL, 细节."
echo " PICTURE, 图片."
exit -1
}
# 获取脚本执行时的选项
while getopts u:t:c:d:p: option
do
case "${option}" in
u) USER=${OPTARG};;
t) TITLE=${OPTARG};;
c) CONTENT=${OPTARG};;
d) DETAIL=${OPTARG};;
p) PICTURE=${OPTARG};;
h) usage;;
?) usage;;
esac
echo $option
echo $OPTARG
done
————————————————
版权声明:本文为CSDN博主「欧阳鹏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ouyang_peng/article/details/86488451