在 Windows 上的 ubuntu 中运行 bash 简单 shell 脚本时出现警告

在 Windows 上的 ubuntu 中运行 bash 简单 shell 脚本时出现警告

我已经激活并安装了适用于 Windows 的 Ubuntu 版 Bash, 伟大的!

现在我尝试编写一个简单的 shell 脚本,但我遇到了困难。这个简单的示例脚本从这里下面的代码在我的 Linux 服务器上运行良好,但在 Windows 上的 Bash 中抛出一个错误:

#!/bin/sh

# Define your function here
Hello () {
   echo "Hello World $1 $2"
   return 10
}

# Invoke your function
Hello Zara Ali

# Capture value returnd by last command
ret=$?

echo "Return value is $ret"

输出:

rene@laptop:/mnt/f/xampp/htdocs$ sh test.sh
: not foundite.sh: 2: test.sh:
Hello World

因此出现警告并且没有正确输出。为什么?在 Windows 的 Bash 中配置任何设置以使其工作?在 Windows 中安装 Bash 后,我还没有更改任何内容。

答案1

经过测试,似乎是因为您的脚本是使用 Windows 行尾 (CRLF) 而不是 Unix 样式行尾 (LF) 创建的,可能是因为您使用了基于 Windows 的编辑器。我遇到了同样的问题,因为我使用的是 SublimeText,它在 Windows 上默认为“系统”行尾 (CRLF)。

要验证只需复制脚本并使用附带的编辑器(例如 Windows bash shell 上的 Ubuntu 中的 vi)创建文件,将编辑器配置为使用 Unix 行尾,或将现有文件转换为 Unix 行尾。

  1. vi test.sh
  2. 粘贴您的代码
  3. 保存文件wq
  4. ./test.sh产生预期结果

相关内容