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

时间:2015-03-06 16:30:26

标签: bash random

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

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

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

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

我不知道为什么输出中有10个额外的空格。当我将上述命令链接在一起以生成URL时,我得到了这个:

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

如您所见,生成的网址中只有一个额外的空间。我该如何避免这种情况?

我也尝试了对rand_int命令$(od -An -N2 -i /dev/random)进行子shell,但这会产生相同的结果。我曾考虑将命令组合在一起,但我不知道如何在一个要在URL中使用的变量中捕获rand_int命令的输出。

1 个答案:

答案 0 :(得分:1)

正如评论所示,实现这一目标的方法不止一种。这就是我要做的事情:

(( 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的方法的一个原因。