我正在使用Linux和bash。 我有一个简单的文本文件,如下所示:
VAR1=100
VAR2=5
VAR3=0
VAR4=99
我想通过bash提取VAR2的值,即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}'
将打印变量的值