Windows下编辑的脚本文件在CentOS下无法正常执行

本文介绍了一种常见的跨平台Shell脚本问题——不同操作系统间换行符不一致导致的运行错误,并提供了具体的排查及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

脚本&报错

在windows下使用editplus编辑一个极简单的脚本文件:start.sh,用于启动同目录下的springboot项目

#!/bin/bash
PROJECT_NAME=service_ucenter-0.0.1-SNAPSHOT
pid=`ps -ef |grep $PROJECT_NAME |grep -v "grep" |awk '{print $2}'`
if [ $pid ]; then
	echo "$PROJECT_NAME 项目正在运行,PID=$pid"
else
	echo "成功启动项目:$PROJECT_NAME ......"
	nohup java -server -Xms128m -Xmx512m -jar ./$PROJECT_NAME.jar --spring.profiles.active=prod >> log.out 2>&1 &
fi

保存格式:utf-8,上传到centos目录后,运行提示:

start.sh:行9: 未预期的符号 `fi' 附近有语法错误
start.sh:行9: `fi'

明明就个if-else,也没看出来有啥语法错误,这提示有点莫名其妙。

问题排查

使用vim打开文件,执行

:set ff

显示结果

fileformat=dos

看来还是文件格式问题:(

解决方案

在vim中使用

:set ff=unix

保存之后,重新运行,没有问题了。

简短说明

  1. set ff=unix:指定使用unix换行符(\n)
  2. set ff=dos:指定使用dos换行符(\r\n)
  3. set ff=mac:指定使用mac换行符(\r)

说白了就是各个系统的换行符标准没有统一。目前来看,想偷懒的话,只能把笔记本也改成Linux系统了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值