正如标题所示,我试图在我的csh脚本中随机选择一个列表中的对象。
到目前为止我所拥有的是:
set list = ( \
"string1" \
"string2" \
"string3" \
)
while [1] do
random_object = "I picked ${list [$RANDOM % ${#list[@]} ] }"
echo $random_object
sleep 1 #test code so I can see it randomise
done
我得到的只是“[1]:不匹配。”
有人有解决方案吗?
答案 0 :(得分:1)
您必须在某些标准UNIX实用程序的帮助下调用。
例如:
#!/bin/csh -f
set list = ( \
"string1" \
"string2" \
"string3" \
)
while (1)
dd if=/dev/random of=/tmp/random count=1 bs=4 >& /dev/null
set random_nr = `od -t u4 /tmp/random | awk '{print $2;}'`
@ random_index = $random_nr % $#list + 1
set random_object = "I picked $list[$random_index]"
echo "$random_object ($random_nr)"
sleep 1
end
答案 1 :(得分:0)
主要是@ fork2execve建议的内容。但是,您可以进行一些简化。你不需要打电话给awk,也不需要dd;而且您不需要临时文件。你可以这样做:
set random_nr=`od -D -N1 -An /dev/urandom`