从 /dev/random 读取时如何删除 od 输出中的多余空格

How to remove extra spaces in od output when reading from /dev/random

我正在制作一个脚本,以在特定位置自动生成带有随机数的 url。这将用于为随机端点调用 JSON API。最终目标是生成如下内容:

curl -s http://api.openbeerdatabase.com/v1/beers/<RAND_INT>.json | jq '.'

其中 <RAND_INT> 是随机生成的数字。我可以使用以下命令创建这个随机数:

$ od -An -N2 -i /dev/random
          126

我不知道为什么会在输出中多出 10 个 space。当我将上述命令链接在一起生成 URL 时,我得到了这个:

$ echo http://api.openbeerdatabase.com/v1/beers/`od -An -N2 -i /dev/random`.json                                                                                   
http://api.openbeerdatabase.com/v1/beers/ 43250.json

如您所见,生成的 URL 中有一个额外的 space。我该如何避免这种情况?

我也试过对 rand_int 命令 $(od -An -N2 -i /dev/random) 进行子壳化,但结果是一样的。我考虑过将命令组合在一起,但我不知道如何在要在 URL.

中使用的变量中捕获 rand_int 命令的输出

如评论所示,有不止一种方法可以做到这一点。这是我会做的:

(( n = $( od -An -N2 -i /dev/urandom ) ))
echo http://api.openbeerdatabase.com/v1/beers/${n}.json

或者,将其放在一行中:

echo http://api.openbeerdatabase.com/v1/beers/$(( $( od -An -N2 -i /dev/urandom ) )).json

或者,只需使用 ${RANDOM},因为 bash 提供了它,尽管它的值最高为 32767,这可能是您更喜欢基于 od 的方法的原因之一。