我有一个包含一些数据的以下文件
name:Mark
age:23
salary:100
我只想读取姓名、年龄并分配给 shell 脚本中的变量
我怎样才能实现这个目标
我能够通过使用下面的脚本而不是特定数据来真实所有文件数据
#!/bin/bash
file="/home/to/person.txt"
val=$(cat "$file")
echo $val
请提出建议。
最佳答案
您可以只运行一个 read
来读取单次调用的输出,而不是运行多个 grep
或 bash
循环awk:
read age salary name <<< $(awk -F: '/^age/{a=$2} /^salary/{s=$2} /^name/{n=$2} END{print a,s,n}' file)
结果
echo $age
23
echo $salary
100
echo $name
Mark
如果 awk
脚本看到年龄,则会将 a
设置为该年龄。如果它看到工资,则会将 s
设置为工资。如果它看到一个名称,则会将 n
设置为该名称。在输入文件的末尾,它输出它所看到的内容,供 read
命令读取。
关于shell - 使用 shell 脚本从 unix 中的文件中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41034817/