Bash 将大写转换为小写时,意外标记“do”附近出现语法错误
下面是我在运行下面的脚本后遇到的错误。我已经阅读了关于类似错误的其他回复,但找不到答案。有人能看到下面的脚本可能出了什么问题吗 提前谢谢 错误:Bash 将大写转换为小写时,意外标记“do”附近出现语法错误,bash,Bash,下面是我在运行下面的脚本后遇到的错误。我已经阅读了关于类似错误的其他回复,但找不到答案。有人能看到下面的脚本可能出了什么问题吗 提前谢谢 错误: 'bash: lowerit.sh: line 7: syntax error near unexpected token `do 'bash: lowerit.sh: line 7: ` do 脚本: for x in `ls` do if [ ! -f $x ]; then continue fi lc=`echo $x
'bash: lowerit.sh: line 7: syntax error near unexpected token `do
'bash: lowerit.sh: line 7: ` do
脚本:
for x in `ls`
do
if [ ! -f $x ]; then
continue
fi
lc=`echo $x | tr '[A-Z]' '[a-z]'`
done
你需要
代码>在for语句中的'ls'之后,或者在“do”之前换行。看起来像是“另一个人”通过编辑您的问题来解决:)不,他只是解决了格式问题。换行符已经在那里了。这就是我的观点,脚本现在可以了,因为“`do”在错误消息的末尾。只需添加;比如“`;do”,不管行是否在之间结束,脚本都应该是ok的。不好,;请参阅上面的错误消息。由于错误消息以“
开头,而不是以它们结尾,这看起来像是文件编码问题。您能运行cat-v lowerit.sh
并查看每一行是否以^M
结尾吗?首先不要像这样使用ls
。对*
中的x使用。错误消息告诉您意外的令牌是do\r
。该代码为我运行。我想我看到了一个不同的第一个版本(不仅仅是格式,至少ls
没有在backticks中)。正如另一位评论者所指出的,在*
中为x使用,并在两处引用您的“$x”
扩展。@Fred如果查看编辑历史记录,对文章所做的唯一更改是缩进代码以创建代码块;未添加其他换行符。