Bash-Shell;读取命令;在Windows7上使用Cygwin

Bash-Shell;读取命令;在Windows7上使用Cygwin,bash,cygwin,unix,Bash,Cygwin,Unix,好吧,我有这个问题。我编写了一个脚本,将在Windows上的cygwin中运行。我尝试了一些基本的示例脚本,以防脚本出现问题 所以我试了一下: #!/bin/bash echo -e "Enter your name and press [ENTER]: \c" read var_name echo "Your name is: $var_name" 然后我将运行它,并为var_name输入一个名称 我明白了: $ ./project1.sh Enter your name and pres

好吧,我有这个问题。我编写了一个脚本,将在Windows上的cygwin中运行。我尝试了一些基本的示例脚本,以防脚本出现问题

所以我试了一下:

#!/bin/bash
echo -e "Enter your name and press [ENTER]: \c" 
read var_name
echo "Your name is: $var_name"
然后我将运行它,并为var_name输入一个名称

我明白了:

$ ./project1.sh
Enter your name and press [ENTER]: Jake
': not a valid identifierad: `var_name
Your name is:

据我所知,我在阅读方面有问题。我试图为我的班级做一个项目,但我似乎不明白为什么它不读。我没有成功地阅读了这本书,然后在网络上引用了这些似乎对我也不起作用的例子。有人知道这是我的设置还是我遗漏了什么吗,谢谢。

您可以使用
read
来提示用户。无需回声
echo

read -r -p "Enter your name and press: " var_name

您应该对该脚本执行
od-xcb
。我的猜测是,它几乎肯定会有错误的行尾字符

我之所以建议这样做,是因为:

': not a valid identifierad: `var_name
看起来可疑地像两行:

.........................ad: `var_name
': not a valid identifier
合并在一起(其中
字符表示已被覆盖的内容)

如果该行中的变量是var\u name-return,而不是更普通的
var\u name
,则会出现这种情况

事实上,Cygwin也指出了这一结论,因为当您使用Windows编辑器编辑脚本时经常会遇到麻烦,该编辑器使用CR/LF,Cygwin只需要LF

我怀疑您会发现,在实际脚本上执行
od-xcb
表明您在一个或多个脚本行上有这些Windows行结尾


事实上,我刚刚在Ubuntu下测试了这一点,将
CTRL-M
放在
read
行的末尾,然后输出(稍微修改以显示
CTRL-M
):

换句话说,和你看到的非常相似


另外(现在我可以访问Cygwin环境),您看到的是输出:

abcdefghij.sh: line 99 read: `var_name
`: not a valid identifier
其中第二行覆盖第一行,给出:

`: not a valid identifierad: `var_name

换句话说,奇怪的单词
identifierad
实际上是由
标识符
读取的最后一个
ad:
组成的。它与我上面的示例(与exact相反)相似的原因是,您的文件名和行号与我的小测试脚本不同。

好的,我试过了,现在我猜是我的设置有问题。当我像以前一样将该行与输出一起使用时,会得到与以前相同的错误。感谢您的快速响应。值得一提的是,您的示例可以在我的Cygwin和Linux环境中运行。试试这个最简单的例子,看看它是否适合您:
readname;echo$NAME
谢谢。这是编辑的问题。我使用的是windows编辑和保存,而不是vi编辑器,所以我现在可以使用了。谢谢你测试它。你可以用它来修复它。或者只使用vi,就像${Dedity:-GreatGreenArkleseizure}想要的那样:-)好的,我用vi编辑器重写了它,工作得很好。很高兴能克服挫折,哈哈。非常感谢。
`: not a valid identifierad: `var_name