欢迎各位兄弟 发布技术文章
这里的技术是共享的
在 macOS 中,如果你想通过 curl
或 wget
获取网络数据并将其保存为一个字符串变量,你可以使用 shell 的特性来实现。这里是如何做到这一点的示例:
-s, --silent 静默模式
Silent or quiet mode. Don't show progress meter or error messages. Makes Curl mute.
Bash深色版本1 result=$(curl -s 'http://example.com') 2 echo "$result"
在这个例子中,curl -s 'http://example.com'
命令会被执行,并且 -s
选项会告诉 curl
在执行时不输出任何进度信息,只返回数据。$(command)
是 bash 中的命令替换语法,它会执行括号中的命令并将输出结果存储为字符串。然后这个字符串被赋值给变量 result
。
对于 wget
,你可能需要先将输出重定向到一个临时文件,然后再读取这个文件到变量中,因为 wget
不像 curl
那样直接支持命令替换语法。但是,从 macOS Catalina (10.15) 开始,wget
已经更新到了一个更现代的版本,该版本支持管道操作。因此,现在也可以直接使用管道来完成类似的操作:
Bash深色版本1 result=$(wget -qO- 'http://example.com') 2 echo "$result"
这里 -q
选项使 wget
运行时保持安静模式,不显示进度条等信息;-O-
指定输出到标准输出而不是文件。同样地,$(command)
将命令的输出结果存储在 result
变量中。
然而,如果使用的是旧版本的 wget
,则可以这样操作:
Bash深色版本1 wget -qO temp_file 'http://example.com' 2 result=$(cat temp_file) 3 rm temp_file 4 echo "$result"
在这个例子中,wget
的输出被重定向到一个名为 temp_file
的临时文件中,然后使用 cat
命令将文件内容读取到变量 result
中。最后,临时文件被删除。但是,使用现代的 wget
版本,第一种方法更为简洁和高效。