首页 > 解决方案 > 从多管道输出创建变量?

问题描述

我有一个脚本:

#!/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 的变量?根据这个答案,我认为以上应该是正确的。

标签: bashvariables

解决方案


推荐阅读