Arrays 在数组中声明并在bash脚本中随机打印数组中的值
这是我的bash脚本代码Arrays 在数组中声明并在bash脚本中随机打印数组中的值,arrays,bash,shell,Arrays,Bash,Shell,这是我的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
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
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”);
回显“已声明数组”
对于{1..100}中的i
做
for((i=1;i$[…]
是$(…)
的旧版本和弃用版本。因此,您所做的只是简单的算术扩展,它会扩展回随机索引
要使用生成的索引访问数组的元素,请使用:
echo "${types[$RANDOM%${#types[@]}]}"
请尝试以下代码段:
#!/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
这将打印数组类型的随机顺序
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
,-人头计数=计数
:最多输出计数
行
-i
,-输入范围=LO-HI
:将通过HI
的每个数字LO
视为一个输入行
-r
,-重复
:可以重复输出行
源代码manshuf
从你之前提出的所有不被接受的问题来看……如果有一个令人满意的答案可以解决你的问题,那么看看:注意,这不仅会给回答者带来声誉,也会给你带来声誉。