gpt4 book ai didi

linux - 如何使用 shell 脚本使用来自标准输入(键盘)的信息更新文件?

转载 作者:太空宇宙 更新时间:2023-11-04 09:54:57 25 4
gpt4 key购买 nike

基本上我要做的是:

我有一个包含学生姓名及其部分成绩的文件:

(firstname lastname grade)

我要做的是用他们的考试成绩和期末成绩更新该文件:

(partial+exam)/2

考试成绩通过键盘输入。所以我必须呼应一个学生的名字并从键盘上读取他的考试成绩,并在文件中更新他的行,然后继续下一个,当我全部完成后将其排序在最终成绩列之后。

我无法从键盘上读取考试成绩。我试过使用某种形式的 awksed 但无法让它工作(无法从键盘获取信息)而且我什至不确定是否是这样它必须完成。

请帮忙。

提前联系,坂东

编辑:(需要编辑,我对此有点陌生)

输入看起来像这样:

Tom Green 7
Jenny Patricks 6
Andrew Gibbs 3
Collin Matthews 10

它必须从脚本运行。在运行时,它应该将学生的名字和姓氏输出到标准输出,并询问他的成绩。一旦给它编辑文件看起来像:

Tom Green 7 9 8

然后走向下一个学生。

最佳答案

此脚本执行与您想要的类似的操作:

#!/bin/bash

# $1 input file
# $2 output file (or equal to $1 if ommitted)

if [ -z "$2" ]; then
OUTFILE=$1
else
OUTFILE=$2
fi

cat $1 | while read -u 0 FIRST LAST PART ; do
echo "firstname: '$FIRST'"
echo "lastname: '$LAST'"
echo "grade: '$PART'"
read -p "Exam grade: " -u 1 EXAM

#Edit
# was let FINAL=(PART+EXAM)/2
# should be:
FINAL=$(calc \($PART+$EXAM\)/2)

echo "$FIRST $LAST $PART $EXAM $FINAL" >> tmp
echo "final grade: '$FINAL'"
echo -e "-----------\n"
done

mv tmp $OUTFILE

但是 shell 算术只是整数。对于除法,您有两个运算符:/(整数除法)和 %(提醒)。我认为您应该考虑使用其他语言来完成任务,例如 pythonperl


编辑:您可能想使用 apcalc 中的 calc 命令。请参阅上面更正的脚本。您必须调整 calc 命令选项以防止它接管 STDIN。抱歉,我不得不离开你 - 我现在没有时间。

关于linux - 如何使用 shell 脚本使用来自标准输入(键盘)的信息更新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6331495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com