如何在Shell脚本的另一个文件中更新选择变量?

时间:2020-09-22 00:31:21

标签: bash shell

如果对我的问题的解决方案非常简单明了,我会提前道歉,因为我是Shell脚本的新手。对于我正在开发的程序,我需要更新先前创建的另一个文件的内容。例如,假设这是要更新的文件之一,student_1.item:

set_time_limit

我要创建另一个bash文件,询问要更新的文件的名称,然后一次提示用户输入以下内容:

student_1 Sally Johnson 
3 9
Mr. Ortiz

用户可以将上述任何内容保留为空白,并且未填写的内容在原始student_1.item文件中也不会更改。但是,无论填写的内容是什么,都应该更改并更新为用户输入的内容。

我相信我需要了解环境变量的概念,但是我有些困惑。我是否需要首先将这些行从student_1.item中读取为变量,然后将所有更改的变量导出回student_1.item中?

再次,如果这是一个愚蠢的问题,我表示歉意。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

听起来有点复杂,但这是未经测试的解决方案:它逐行读取文件并将这些行分配给3个变量。之后,将解析这些变量以获得适当的Student值。

# line number
n=0

# read file line by line
while read line; do
# assign line to a variable
case $n:
  0) firstline=$line
  ;;
  1) secondline=$line
  ;;
  2) thirdline=$line
  ;;
esac
# increment line number
n=$((n+1))
done < student_1.item

# parse each line variable
student_number=$(echo $firstline | cut -d' ' -f1)
student_name=$(echo $firstline | cut -d' ' -f2,3)
student_grade=$(echo $secondline | cut -d' ' -f1)
student_age=$(echo $secondline | cut -d' ' -f2)
student_teacher=$thirdline