如果对我的问题的解决方案非常简单明了,我会提前道歉,因为我是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中?
再次,如果这是一个愚蠢的问题,我表示歉意。任何帮助表示赞赏!
答案 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