问题描述
大多数情况下,您在不使用 vi 命令的情况下在 Windows 或 WinSCP 上/从 Windows 或 WinSCP 创建脚本/将脚本放置到 Unix 机器上,您很可能会遇到以下错误。
据我所知,这种情况总是因为特殊字符而发生,这些特殊字符看起来像简单的空格,但却是从 Outlook 或其他工具中预先格式化的。
遇到的错误:
ksh:
0403-015 无法访问所需的可执行文件。正在使用中。
重击:
/bin/bash^M: 错误的解释器:无法打开或删除包含正在运行的程序的文件
解决方法
将脚本放在 Linux 机器上并运行以下命令:
sed -i -e 's/\r$//' Your_Script.sh
命令解释:
sed
用于过滤和转换文本的流编辑器
-i[SUFFIX],--in-place[=SUFFIX]
就地编辑文件(如果提供扩展名则进行备份)
-e 脚本,--表达式=脚本
将脚本添加到要执行的命令中
,使用“文本”模式在 WinSCP 中上传脚本。
见https://winscp.net/eng/docs/transfer_mode
您最好启用“自动”模式,而不是明确的“文本”,这样您就不会使用文本模式无意中上传图像等二进制文件。