我正在制作一个脚本,以便在特定位置自动生成带有随机数的网址。这将用于为随机端点调用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命令的输出。
答案 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
的方法的一个原因。