我正在试图找出一种自动更改版本号的方法,为此我有一个尝试读取文件然后更改它的脚本。
\\ students.txt
this is a text, text is not so bad, and more text
我在同一目录中有students.txt和changetext.sh文件。
\\ changetext.sh
sed -i='' "s/, /- /g" students.txt
当我在Windows64位系统上使用Windows 10在Cygwin上运行此命令时,它在控制台上运行良好。但是当我尝试从shell脚本运行此命令时,如上所示,它会出现以下错误。
$ ./changetext.sh
: No such file or directoryt
我不确定是什么问题?有人可以指导我吗?
答案 0 :(得分:0)
我在我的Cygwin副本上遇到了不同的行为(在Win10下大约6个月),但您对-i
的使用不正确。
你想要" -i
[空间]"那不是[SPACE]
,而是文字空间。它会尝试使用=
后缀。它可能正在解释''在你的系统上也不同于我的。
啊......如果我在Windows目录中,我会收到错误。我相信它试图生成的任何文件名作为备份文件对于Cygwin是合法的,但不适用于Windows。
如果您想要备份文件,请使用-i~
或-i.bak
或其他内容。
您的脚本的另一个潜在问题是缺少shebang来指定应该使用哪个shell来解释它。 -i=''
的奇怪之处也很可能被不同的贝壳解释得不同。 bash shebang是典型的:
答案 1 :(得分:0)
好的,我找到了答案。我认为这是Cygwin的问题,因为我在ubuntu操作系统上尝试了相同的脚本,它运行得非常好。
我不确定这个问题,但如果我错了,有人可以纠正我。我尝试使用Ubuntu 16.04并且它有效,但它在使用Cygwin的Windows 10上不起作用。