Bash Shell;读命令;在Windows 7上使用Cygwin
好的,所以我遇到了这个问题.我在
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: 据我所知,我遇到了阅读问题.我正在尝试为我的课程开展一个项目,但我似乎无法弄清楚为什么它不会读它.我毫不夸张地跟着这本书,然后在网上使用这些似乎对我不起作用的例子.有没有人知道这是我的设置还是我错过了什么,谢谢.
你应该对该脚本执行od -xcb.我的猜测是,它几乎肯定会有错误的行结束字符.
我建议这是因为该行: ': not a valid identifierad: `var_name 看起来像两条线一样可疑: .........................ad: `var_name ': not a valid identifier 合并在一起(.字符表示已被覆盖的内容). 如果你在该行中的变量是var_namecarriage-return而不是更正常的var_name,那就是这种情况. 事实上它是Cygwin也指出了这个结论,因为当你使用Windows编辑器编辑你的脚本时经常遇到麻烦,这个编辑器使用CR / LF,其中Cygwin只需要LF. 我怀疑你会发现在你的实际脚本上做一个od -xcb表明你在一个或多个脚本行上有那些Windows行结尾. 事实上,我刚刚在Ubuntu下通过在读取行的末尾放置一个CTRL-M并输出(稍微修改以显示CTRL-M)来测试它: pax@pax-desktop:~$od -xcb qq.sh ; ./qq.sh 0000000 2123 622f 6e69 622f 7361 0a68 6365 6f68 # ! / b i n / b a s h n e c h o 043 041 057 142 151 156 057 142 141 163 150 012 145 143 150 157 0000020 2d20 2065 4522 746e 7265 7920 756f 2072 - e " E n t e r y o u r 040 055 145 040 042 105 156 164 145 162 040 171 157 165 162 040 0000040 616e 656d 6120 646e 7020 6572 7373 5b20 n a m e a n d p r e s s [ 156 141 155 145 040 141 156 144 040 160 162 145 163 163 040 133 0000060 4e45 4554 5d52 203a 635c 2022 720a 6165 E N T E R ] : c " n r e a 105 116 124 105 122 135 072 040 134 143 042 040 012 162 145 141 0000100 2064 6176 5f72 616e 656d 0a0d 6365 6f68 d v a r _ n a m e r n e c h o ^^ 144 040 166 141 162 137 156 141 155 145 015 012 145 143 150 157 0000120 2220 6f59 7275 6e20 6d61 2065 7369 203a " Y o u r n a m e i s : 040 042 131 157 165 162 040 156 141 155 145 040 151 163 072 040 0000140 7624 7261 6e5f 6d61 2265 0a0a $ v a r _ n a m e " n n 044 166 141 162 137 156 141 155 145 042 012 012 0000154 Enter your name and press [ENTER]: Pax ': not a valid identifierar_name Your name is: 换句话说,与您所看到的非常相似. 顺便说一句(现在我可以访问我的Cygwin环境),你看到的是输出: abcdefghij.sh: line 99 read: `var_name `: not a valid identifier 第二行覆盖第一行,给出: `: not a valid identifierad: `var_name 换句话说,奇怪的单词identifyierad实际上由标识符和最终广告组成:来自:之所以与上面的例子相似(而不是精确)是因为你的文件名和行号与我的小测试脚本不同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |