使用 Cygwin 和 PuTTY 执行脚本有什么区别?

使用 Cygwin 和 PuTTY 执行脚本有什么区别?

现在我得到一个script.sh,以前它是使用PuTTY执行的,前提是它是在VMWare中编写的,但现在我想在Windows中使用Cygwin执行,我已经将其复制script.sh到相应的目录,但有些命令Cygwin无法识别。

generate(){
 date +%T
}

TIME = generate()
echo " Current Time: $TIME"

在Cygwin中执行后

script.sh: line 3: syntax errot neat unexpected token '$'<\r''
script.sh: line 3:'generate<><

答案1

您的脚本中有几个错误。在赋值时,等号周围不能有空格。为了将函数或程序的输出分配给变量,您必须使用命令替换,这意味着命令名称被括起来$()(这是可取的)或反引号(不太可取)。此外,当您调用函数时,您不会像在其他语言中那样在函数名称后使用括号。

generate () {
    date +%T
}

TIME=$(generate)

echo " Current Time: $TIME"

错误$'\r'是由于 Windows 行尾错误造成的。您可以使用dos2unix来转换文件,或者使用可以选择使用哪种类型的行尾来保存文件的编辑器。

dos2unix script.sh

相关内容