这是我的bash脚本代码
declare -a types=("m4.xlarge" "m5.12xlarge" "m5d.12xlarge" "m4.large" "m4.16xlarge" "t2.2xlarge" "c4.large" "c5.xlarge" "r4.2xlarge" "x1e.4xlarge" "h1.16xlarge" "i3.16xlarge" );
echo "array declared"
for i in {1..100}
do
for (( i=1; i<${arraylength}+1; i++ ))
do
#index=$( jot -r 1 0 $((${#expressions[@]} - 1)) )
randominstancetype=$[$RANDOM % ${#types[@]}];
#randominstancetype=$( shuf -i0-1 -n1 $((${#types[@]} )) );
#randominstancepvtiptype=$[$RANDOM % ${#pvtip[@]}];
#randominstancepubiptype=$[$RANDOM % ${#pubip[@]}];
done
done
我试图声明数组,然后随机打印数组中的元素大约100次。当前没有显示元素的名称,而是显示为3 5 8,等等。我们将不胜感激。
答案 0 :(得分:1)
$[...]
是$((...))
的旧版本。因此,您要做的只是简单的算术扩展,然后扩展回随机索引。
要使用生成的索引来访问数组 的元素,请使用:
echo "${types[$RANDOM%${#types[@]}]}"
答案 1 :(得分:0)
尝试以下代码段:
#!/bin/bash
declare -a types=("m4.xlarge" "m5.12xlarge" "m5d.12xlarge" "m4.large" "m4.16xlarge" "t2.2xlarge" "c4.large" "c5.xlarge" "r4.2xlarge" "x1e.4xlarge" "h1.16xlarge" "i3.16xlarge" )
echo "array declared"
max_random=32767
type_count=${#types[@]}
factor=$(( max_random / type_count ))
for i in {1..1000}
do
random_index=$(( $RANDOM / $factor ))
random_instance_type=${types[$random_index]}
echo $random_instance_type
done
答案 2 :(得分:0)
这将打印阵列types
的随机顺序。
for j in {1..100}; do
for i in $(shuf -i 0-$((${#types[*]}-1))); do
printf "%s " "${types[i]}";
done;
printf "\n";
done
如果您允许重复,那么您可以
for j in {1..100}; do
for i in $(shuf -n ${#types[*]} -r -i 0-$((${#types[*]}-1))); do
printf "%s " "${types[i]}";
done;
printf "\n";
done
命令使用shuf
及其选项:
-n
,--head-count=COUNT
:最多输出COUNT
行-i
,--input-range=LO-HI
::将每个数字LO
至HI
视为输入行-r
,--repeat
:可以重复输出行来源
man shuf