程序以这种格式输出其数据:
n=4607356
null_cells=5668556
cells=10275912
min=0.0433306089835241
max=0.53108499199152
range=0.487754383007996
mean=0.40320252333736
mean_of_abs=0.40320252333736
stddev=0.0456556814489487
variance=0.00208444124856788
coeff_var=11.3232628285782
sum=1857697.565113524
first_quartile=0.378443
median=0.410276
third_quartile=0.435232
percentile_90=0.457641
Run Code Online (Sandbox Code Playgroud)
我想将其中一些变量解析为 bash,以便我可以在我的脚本中使用它们,例如:
$n = 4607356
$median = 0.410276
Run Code Online (Sandbox Code Playgroud)
等等,一口气。
我怎样才能做到这一点?
似乎最简单的方法是将输出重定向到一个文件,然后源该文件。
在脚本中,它将如下所示:
#!/bin/sh
program > tmp_file
. tmp_file
rm tmp_file
echo $any_var_you_need
Run Code Online (Sandbox Code Playgroud)
在bash你可以不用在所有的临时文件:
#!/bin/bash
source <(program)
echo $any_var_you_need
Run Code Online (Sandbox Code Playgroud)
唯一理论上的安全漏洞是程序可能会输出一些会破坏某些东西的危险代码。
您可以通过检查program的输出来避免它,sed以确保它只包含变量:
program | sed '/^\s*[a-zA-Z_.][_a-zA-Z0-9]*=[a-zA-Z0-9_-+.,]*/!d;s/ .*//;'
Run Code Online (Sandbox Code Playgroud)
它将删除所有看起来不是变量的字符串(可以根据您的喜好进行编辑)。
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |