我正在用gawk写一个小游戏,我正在使用安装了gawk的Raspberry Pi。 在Windows编辑器上保存我的代码以将文件移动到我的覆盆子后,我遇到了一些编码问题(必须删除一些讨厌的^ M字符)。该文件以UTF-8保存('locale'告诉我LANG = en_GB.UTF-8)。 :设置编码?在vim告诉我我也使用UTF-8(同样适用于:set fileencoding?)。
当我尝试执行保存为.sh脚本的代码时,解释程序停在第一个OR符号“|”
while ((FieldSize !~ /^[[:digit:]]+$/) || (FieldSize < 4))
错误信息是:表达式中无效的字符'squarishlooking char'。
我已经尝试了几个修复,我也查看了hexview中的文件,并且两个| -chars被正确识别为'7C',|的十六进制值在ascii图表中。
只有当我使用组合 AltGr - 7 将字符输入到vim时才会出现错误。如果我进入vim的INSERT模式并使用 Ctrl - V 124(这是ascii图表中的|的dez值),则不会发生错误。如果我在hexview中查看2个选项中的任何一个,则字符正确地嵌套在任一侧的空格字符(十六进制:20)之间 - &gt; 20 7c 7c 20.
我现在也在使用
突出显示我的vim中的nonascii-charssyntax match nonascii "[^\x00-\x7F]"
highlight nonascii guibg=Red ctermbg=2
并且只有当我使用 altGr - 7 时才会突出显示管道字符。
总是使用 ctrl - V xxx在我的拙见中并不是一个非常可取的解决方案。 当我使用 AltGr - 7 来输入“|”时,我希望我的脚本能够工作。除了使用 ctrl - V 124 的解决方法之外,还有什么解决方法吗?
答案 0 :(得分:1)
squarishlooking char
表示它不是正常的管道。这是你的终端没有角色的东西。如果您无法通过xxd
查看,那么您可能无法查看正确的文件/地点。
答案 1 :(得分:0)
这不是shell脚本,而是awk脚本。你看到shell抱怨说它不知道如何处理两个管道。这将是独立版本:
#!/usr/bin/gawk -f
# your code here
然后,您的操作系统将自动从HashBang(#!
)中找出并运行gawk
。
或者,这也可以通过首先运行一个调用awk命令的新shell来实现:
#!/usr/bin/env sh
awk 'your awk code here'