【发布时间】:2017-05-19 01:18:46
【问题描述】:
我定义了一个函数来获取 10 个随机数,其值为 [0..9]。
define write_file
for i in $$( seq 1 10 );\
do\
RANDOM := $(shell bash -c 'echo $$RANDOM')%10;\
echo -n $$RANDOM >> test.txt;\
done
endef
但是当我调用它时,输出是:
for i in $( seq 1 10 ); do RANDOM := 25401%10; echo $RANDOM; done
/bin/sh: 1: RANDOM: not found
/bin/sh: 1: RANDOM: not found
/bin/sh: 1: RANDOM: not found
/bin/sh: 1: RANDOM: not found
/bin/sh: 1: RANDOM: not found
/bin/sh: 1: RANDOM: not found
/bin/sh: 1: RANDOM: not found
/bin/sh: 1: RANDOM: not found
/bin/sh: 1: RANDOM: not found
/bin/sh: 1: RANDOM: not found
我也尝试过使用echo $RANDOM 而不是echo $$RANDOM,但还是不行。
编辑
我还在 bash shell 脚本中尝试了 echo RANDOM。
#!/bin/sh
for i in $( seq 1 10 )
do
echo ${RANDOM}
done
但是终端出现了提示。
正确的 bash 脚本
从评论中,#!/bin/sh 应更改为#!/bin/bash。
#!/bin/bash
for i in $( seq 1 10 )
do
echo ${RANDOM}
done
【问题讨论】:
-
更改为
#!/bin/bash,因为$RANDOM是bash扩展。 -
您的 makefile 正在尝试在 shell
for循环中分配make变量。这怎么可能行得通? -
那么我怎样才能得到10个随机数呢?
-
当我改为
bash时,什么都没有改变。 -
脚本适合我。
标签: bash shell makefile gnu-make