【发布时间】:2018-04-29 13:58:04
【问题描述】:
我很难在 Windows 10 上的 Ubuntu 上执行我的 shell 脚本。脚本非常简单:
# file name: submission.sh
echo "Hello world" > output.txt
当我使用命令sh submission.sh 执行它时,它给了我一个错误:
$ sh submission.sh
: Directory nonexistentssion.sh: cannot create output.txt
但是,当我把脚本改成
# file name: submission.sh
echo "Hello world"
并使用相同的命令 sh submission.sh 执行它,它给了我正确的输出
$ sh submission.sh
Hello world
当脚本涉及将输出定向到文件时,Windows 上的 Ubuntu 上的 bash 似乎无法正确处理。有什么解决方案或解决方法吗?
编辑: 关于我的系统的详细信息:
- 程序:“Windows 上的 Ubuntu 上的 Bash”
- 操作系统:Windows 10 版本 1709
编辑: 直接在终端上输入命令即可,即
$ echo "Hello world" > output.txt
$ cat output.txt
Hello world
我还是想把命令放到一个文件里执行文件,而不是直接把命令写到终端,这个还是没解决。
【问题讨论】:
-
顺便说一句:
sh通常不是bash。 -
您似乎在
nonexistentssion.sh:和No such file or directorytput.txt中有错误的文本,这表明您在文件\r中可能有Windows 行尾。如果您使用 Windows 程序(如记事本)创建脚本,那么可能就是这种情况。如果您有dos2unix,请在您的脚本上运行它并重试。 -
@cdarke 是的,你是对的。现在可以了。这很奇怪,因为我在 Windows 上使用 Ubuntu 上的 Bash 中的
nano对其进行了编辑,所以我认为他们使用\n作为行尾。如果你想写一个正确的答案,我很乐意接受。 -
@Firman:被质疑了。
标签: bash sh windows-subsystem-for-linux