【发布时间】:2013-10-29 02:58:04
【问题描述】:
正如它所说的那样。我正在尝试根据书中的问题编写一个简单的 bash 脚本。我正在尝试使用 case 语句,并且据我所知,我正在正确使用它。但是,我不断收到“意外令牌'$'in\r' case $i in 附近的语法错误。
不知道为什么。我也确定我的代码中还有其他问题,因为这是我的第一个脚本。 case 语句在第 10 行。随意更正任何其他内容,最终程序将为学生成绩构建一个成绩数据文件,使用简单的 awk 脚本计算成绩的平均值,并将所有内容放入输出文件中。
function getStudentData () {
i=0
while [ $i<5 ]
do
case $i in
[0]) echo -n "Enter student name\n"
read name
;;
[1]) echo -n "Enter Quiz grade\n"
read quiz
checkLimits $quiz
;;
[2]) echo -n "Enter homework grade\n"
read hw
checkLimits $hw
;;
[3]) echo -n "Enter midterm grade\n"
read midterm
checkLimits $midterm
;;
[4]) echo -n "Enter Final grade \n"
read final
checkLimits $final
;;
esac
done
}
function checkLimits ($grade) {
if [ grade <= 100 || grade >= 0 ]; then
$i--
fi
}
if [ $# -lt 2 ]; then
echo "Incorrect number of arguments"
exit 1
fi
#Check awk existance
if [ ! -e $2 ]; then
echo "Error, .awk file does not exist"
exit 1
fi
#flag for data file existing, and awk file
flag=0
#Check for data file existing
if [ ! -e $1 ];then
flag=0
else
flag=1
fi
ans="yes"
while [ $ans == "yes" || $ans == "y" ]
do
echo "Do you want to enter a student record?"
read ans
if [ $ans == "y" || $ans == "yes" ];then
getStudentData
else
echo "we done"
exit 1
fi
done
【问题讨论】:
-
[ $i<5 ]并没有像你想象的那样做。 -
是否需要 while (( $i
-
这行得通,是的,但您需要了解原因。尝试检查
[和bash的手册页。 -
实际上,这只是在第 6 行创建了一个意外标记:while (( $i
-
你确定你是用
bash而不是/bin/sh来运行这个吗?
标签: bash