这是 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 行结尾。
从文件中删除所有回车符。大多数编辑器会在具有混合行结尾的文件中明确显示它们。