[英]syntax error near unexpected token `{ - bash
defineColumns() {
shift
local dirfun=${1:-"/var/log/was/dial"}
local basefun=${2:-"$logdir/party_info.$(date +%y%m%d%H%M%S)"}
touch $logbase_bcdb
info $dirfun $basefun
# Run steps sequentially
loadData
}
我正在编写一个 shell 脚本代码,我在其中编写了多个函数。 上述功能是抛出错误为:靠近意外的标记语法错误`{什么是错误的代码?
代码中有非打印字符:Unicode U+200B ZERO WIDTH SPACE。 删除它们,你应该没事。
首先要查看它们,您可以使用cat -A
但它将这些字符显示为M-bM-^@M-^K
,这让 IMO 感到困惑。 我宁愿阅读 Python ascii()
表示,所以这里有一个快速脚本:
import fileinput
for line in fileinput.input():
print(ascii(line))
将其另存为 ascii_lines.py,然后使用脚本名称运行:
$ python3 ascii_lines.py filename.sh
'\u200b\u200b\u200b\u200b\u200bdefineColumns() {\n'
'\u200b\u200b\u200b\u200b\u200b\u200b\u200b shift\n'
' local dirfun=${\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b1:-"/var/log/was/dial"}\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\n'
' local basefun=${\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b2:-"$logdir/party_info.$(date +%y%m%d%H%M%S)"}\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\n'
' touch $logbase_bcdb\n'
' info $dirfun $basefun\n'
' # Run steps sequentially\n'
' loadData\n'
'}\n'
然后要删除它们,您可以使用sed
,尽管它不知道 Unicode,所以我在这里使用 Bash $''
字符串来解决这个问题。
$ sed -i $'s/\u200b//g' filename.sh
然后:
$ python3 ascii_lines.py filename
'defineColumns() {\n'
' shift\n'
' local dirfun=${1:-"/var/log/was/dial"}\n'
' local basefun=${2:-"$logdir/party_info.$(date +%y%m%d%H%M%S)"}\n'
' touch $logbase_bcdb\n'
' info $dirfun $basefun\n'
' # Run steps sequentially\n'
' loadData\n'
'}\n'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.