一个简单的案例/esac 构造练习失败了,为什么?

一个简单的案例/esac 构造练习失败了,为什么?

这是 BASH 脚本:

#!/bin/bash

read -p "Type in a color name, please: " COLOR

case "$COLOR" in
    green | red | yellow)
    echo -n "nice colors!"
    ;;
    *)
    echo -n "meh..."
    ;;
esac

一旦x为用户设置了脚本的权限,我就运行它,但得到以下信息:

[inewton@centos7 LPIC1-exercises]$ ./colors.sh
Type in a color name, please: pink
./colors.sh: line 12: syntax error near unexpected token `newline'
'/colors.sh: line 12: `esac
[inewton@centos7 LPIC1-exercises]$

我究竟做错了什么?请帮帮我。

答案1

'/colors.sh: line 12: `esac

请注意行首的结束引号的奇怪位置。这是一个迹象,表明有一个回车符 (CR)单词后的字符esac。 Bash 将 CR 视为单词 的一部分esac␍,因此这不是保留字,并且esac缺少实际单词。

CR 字符是 Windows 行结尾的一部分:Unix 行结尾是单独的 LF(换行)字符,而 Windows 行结尾是两个字符序列 CR+LF。看#!/bin/bash - 没有这样的文件或目录以获得更多解释。这里的问题是你的文件有混合的行结尾:前面的行没有引起问题,所以至少其中一些必须有 Unix 行结尾。

从文件中删除所有回车符。大多数编辑器会在具有混合行结尾的文件中明确显示它们。

相关内容