从文件中读取值并将其放入变量

时间:2018-12-18 00:44:23

标签: bash shell awk sed

我正在尝试读取包含一行的文件

cpu=msm8998

我需要获取“ =”之后的值并将其分配给变量。最简单的方法是什么?尽可能不使用猫

5 个答案:

答案 0 :(得分:5)

使用内置的read

sudo kill -kill $(sudo lsof -t -i :5432)

IFS== read name value < file echo "${value}" 将输入分为由read外壳的内部字段分隔符分隔的字段。在您的示例中,字段分隔符为IFS

或者,仅source个文件:

=

答案 1 :(得分:3)

如果您的输入文件仅是那一行,那么您应该获取它:

$ cat input  

cpu=msm8998
$ echo $cpu 

$ . input
$ echo $cpu
msm8998

答案 2 :(得分:1)

假定此文本在文件cpu.txt中:

#! /usr/bin/env bash

CPU_FILE="cpu.txt"

CPU=`awk -F= '{ print $2 }' "$CPU_FILE"`
echo "\$CPU = $CPU"

使用awk=上拆分(即awk -F=),输出第二个字段({ print $2 }),然后将所有结果存储到{{ 1}},并带有反勾号(如果有的话,我不确定其正确名称)。

答案 3 :(得分:1)

这可以做到:

my_var="$(cut -d= -f2 my_file.txt)"

cut命令的基本原理是将my_file.txt中的每一行拆分为等号分隔的字段,并仅打印第二个字段。

测试会话:

$ echo cpu=msm8998 > my_file.txt
$ my_var="$(cut -d= -f2 my_file.txt)"
$ echo "$my_var"
msm8998

答案 4 :(得分:0)

如果这实际上是另一个文件中的全部内容,那么我只是将其作为源,您给出的示例是有效的shell分配:

$ cat file
pu=msm8998
$ cat using_it
#!/bin/bash

. file
printf '%s\n' "$cpu"

$ ./using_it
msm8998