gpt4 book ai didi

linux - Bash,每次输入无法识别的参数时在终端中打印 0

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

我有一个 bash 程序,它从一个文件中提取标记,如下所示:

 Jack ex1=5 ex2=3 quiz1=9 quiz2=10 exam=50

我希望代码在我输入终端时执行:

./program -ex1 -ex2 -ex3

Jack 的数据中没有 ex3,因此将返回 0 的输出:

Jack 5 3 0

如何编写我的程序以针对每个无法识别的参数输出 0?

最佳答案

如果我明白你想做什么,那就没那么难了。您需要做的是将每一行读入一个 name 并将其余部分读入 marks。 (输入从 stdin 读取)

然后对于命令行上给出的每个参数,检查第一部分是否与 marks 中任何成绩的开头相匹配(= 符号的左侧大小)。如果是,则保存 grade(= 符号的右侧)并将 found 标志设置为 1

根据第一个参数检查所有标记后,如果found标志为1,则输出grade,否则输出0 。对所有命令行参数重复。 (然后是所有学生)如果您有任何问题,请告诉我:

#!/bin/bash

declare -i found=0 # initialize variables
declare -i grade=0

while read -r name marks; do # read each line into name & marks
printf "%s" "$name" # print student name
for i in "$@"; do # for each command line argument
found=0 # reset found (flag) 0
for j in $marks; do # for each set of marks check for match
[ $i = -${j%=*} ] && { found=1; grade=${j#*=}; } # if match save grade
done
[ $found -eq 1 ] && printf " %d" $grade || printf " 0" # print grade or 0
done
printf "\n" # print newline
done

exit 0

输出

$ bash marks_check.sh -ex1 -ex2 -ex3 < dat/marks.txt
Jack 5 3 0

关于linux - Bash,每次输入无法识别的参数时在终端中打印 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30066391/

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