我需要在Shell-Script中创建一个数据库并考虑以下场景插入到数据库中。 我的问题是“如何为每个注册号生成随机数作为标记并插入数据库”?
场景: 1)创建一个名为“students”的表(reg_id,subject,marks)选择合适的数据类型和长度。注意:如果存在学生表,请先将其删除。 2)根据以下标准生成记录并将其插入表中。 一个。学生reg_id应该像“idx”。 “x”应该从1开始。例如:id1,id2 ..... id138 湾每个学生都应该只有8个科目的分数。 (选修科目:艺术,计算机,文学) C。应使用参数更改记录的最大数量。 d。主题标记可以在0到100之间变化。
这是我写的代码:
#!/bin/bash
NoOfSubjects=8
# create students table
mysql -u root school << EOF
drop table students;
create table students (reg_id varchar (10) not null, subject varchar(20), marks int);
EOF
echo "Enter number of students"
read NoOfStudents
# get list of subjects from teachers table
results=`mysql -u root school -e "select subject from teachers;"`
#get results into array
read -r -a arr <<< ${results}
# get marks from terminal
studentCount=1
subjectCount=1
count=1
while [ ${studentCount} -le ${NoOfStudents} ]
do
echo "Enter marks for student :" ${studentCount} " with spaces"
#marks=$(( RANDOM % 100 ))
#echo $marks
#count=`expr ${count} + 1`
read marks
student_id="id"${studentCount}
# enter to db
for input in ${marks}
do
if [ ${input} -ge 0 ] && [ ${input} -le 100 ]
then
`mysql -u root school -e "insert into students(reg_id, subject, marks) values ('${student_id}','${arr[$subjectCount]}',${input})"`
subjectCount=`expr ${subjectCount} + 1`
else
echo "Invalid marks: " ${input}
fi
done
studentCount=`expr ${studentCount} + 1`
subjectCount=1
done