使用bash从文本文件中提取变量值

时间:2016-02-09 16:14:25

标签: bash

我正在使用Linux和bash。 我有一个简单的文本文件,如下所示:

VAR1=100
VAR2=5
VAR3=0
VAR4=99

我想通过bash提取VAR2的值,即5。

我怎么能这样做?

5 个答案:

答案 0 :(得分:1)

最简单的方法是获取文件(.)。这适用于您的示例,因为变量值中没有空格。否则你需要使用grep + cut或awk,如其他答案中所述。

. /path/to/your/file
echo $VAR2

[编辑] 正如dawg所说,这会使你的脚本中的其他变量也可用,并且可能会覆盖现有的变量。

答案 1 :(得分:0)

假设该文件名为vars.txt

sed -n 's/VAR2=\(.*\)/\1/p' < vars.txt

您可以使用单引号

在其他地方使用此值
echo VAR2=`sed -n 's/VAR2=\(.*\)/\1/p' < txt`

答案 2 :(得分:0)

假设:

$ echo "$txt"
VAR1=100
VAR2=5
VAR3=0
VAR4=99

您可以使用awk:

$ echo "$txt" | awk -F= '/^VAR2/ { print $2 }'
5

或者grep and cut:

$ echo "$txt"  | egrep '^VAR2=\d+' | cut -d = -f 2
5

在Bash上,您可以使用source将这些分配的值插入当前shell,并过滤您希望使用的行。在这种情况下,只会使用行VAR2=5。您需要将其写入文件,然后获取该文件:

$ echo "$txt"  | grep '^VAR2' > tmp && source tmp && rm tmp
$ echo $VAR2
5

答案 3 :(得分:0)

对于所描述的文件,您只需将文件作为bash脚本获取,该脚本将运行其内容并使用它更新工作区环境。例如:

source file.txt
echo $VAR2

答案 4 :(得分:-1)

假设这是您的 txt 文件,名为 test.txt

VAR2 = 5
VAR3 = 0
VAR4 = 99

你可以cat test.txt | grep 'VAR2' | awk '{printf $3}'

然后您的输出将是:5

此处,cat test.txt 将在终端中显示 test.txt 的内容,grep 'VAR2' 将列出包含 'VAR2' 的行,awk '{printf $3}' 将打印变量的值