String Bash从列表中选择随机字符串

String Bash从列表中选择随机字符串,string,bash,list,random,String,Bash,List,Random,我有一个字符串列表,每次启动脚本时,我都希望随机选择其中一个字符串 比如说 SDF_BCH_CB="file1.sdf" SDF_BCH_CW="file2.sdf" SDF_BCH_RCB="file3.sdf" SDF_BCH_RCW="file4.sdf" SDF_TT="file5.sdf" 然后我想从上面的列表中随机选择以下两个变量 SDFFILE_MIN=$SDF_BCH_CW SDFFILE_MAX=$SDF_TT 我该怎么做 谢谢以数组存储、计数和随机选择: #!/bin/b

我有一个字符串列表,每次启动脚本时,我都希望随机选择其中一个字符串

比如说

SDF_BCH_CB="file1.sdf"
SDF_BCH_CW="file2.sdf"
SDF_BCH_RCB="file3.sdf"
SDF_BCH_RCW="file4.sdf"
SDF_TT="file5.sdf"
然后我想从上面的列表中随机选择以下两个变量

SDFFILE_MIN=$SDF_BCH_CW
SDFFILE_MAX=$SDF_TT
我该怎么做


谢谢

以数组存储、计数和随机选择:

#!/bin/bash
array[0]="file1.sdf"
array[1]="file2.sdf"
array[2]="file3.sdf"
array[3]="file4.sdf"

size=${#array[@]}
index=$(($RANDOM % $size))
echo ${array[$index]}

使用内置的$RANDOM函数和数组

DF_BCH_CB="file1.sdf"
SDF_BCH_CW="file2.sdf"
SDF_BCH_RCB="file3.sdf"
SDF_BCH_RCW="file4.sdf"
SDF_TT="file5.sdf"

ARRAY=($DF_BCH_CB $SDF_BCH_CW $SDF_BCH_RCB $SDF_BCH_RCW $SDF_TT)
INDEX=(0 1 2 3 4)
N1=$((RANDOM % 5))
SDFFILE_MIN=${ARRAY[$N1]}
N2=$((RANDOM % 4))
if [ "$N2" = "$N1" ] ; then
    N2=$N1+1
fi
SDFFILE_MAX=${ARRAY[$N2]}

echo $SDFFILE_MIN
echo $SDFFILE_MAX

这为SDFIFILIXMIN和SDFIFILIX MAX获得了两个不同的字符串。如果它们不必不同,请删除中间的IF语句。