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如果查看编辑历史记录,对文章所做的唯一更改是缩进代码以创建代码块;未添加其他换行符。