bash - 从多管道输出创建变量?
问题描述
我有一个脚本:
#!/bin/sh
theTest=$( "speedtest-cli" )
echo "$theTest" | grep "Download:" | sed 's/[^ ]* //'
在终端中产生输出,例如:
222.37 Mbit/s
基于对输出的处理,speedtest-cli
如下所示:
Retrieving speedtest.net configuration...
Testing from Telenor Sverige AB...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Telenor AB (Stockholm) [0.29 km]: 1.534 ms
Testing download speed................................................................................
Download: 222.37 Mbit/s
Testing upload speed......................................................................................................
Upload: 287.05 Mbit/s
但是当我尝试不将速度回显到终端而是将其放入变量时,Bash 抱怨“文件名太长”:
#!/bin/sh
theTest=$( "speedtest-cli" )
speedDown=$( "$theTest" | grep "Download:" | sed 's/[^ ]* //' )
我一直试图用谷歌搜索自己摆脱这种混乱,但无济于事。如何创建仅包含 222.37 Mbit/s 的变量?根据这个答案,我认为以上应该是正确的。
解决方案
推荐阅读
- django - django 图像无法从默认值更新
- flutter - 在 Flutter 中将数据异步加载到 ChangeNotifier 模型中
- javascript - 在 Chart.js 中使用和读取来自 Knockout.js 的变量
- xml - DataTrigger 中的多个绑定
- html - 外部 div 背景可见 arround 内部 div 在 Chrome
- vb.net - LINQ to Entities 中的自定义函数?如何编写可接受的代码?
- postgresql - 全文搜索缺失词
- mysql - 进行 SQL 查询以给出这样的特定结果
- reactjs - 组件不会在路由更改时重新渲染
- visual-studio-code - Visual Studio Code 工作区可以与多个 Windows 一起使用吗?