Bash 从列表中选择随机字符串
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/35623462/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Bash select random string from list
提问by Amr Elhosiny
I have a list of strings that I want to select one of them at random each time I launch the script.
我有一个字符串列表,我想在每次启动脚本时随机选择其中一个。
For example
例如
SDF_BCH_CB="file1.sdf"
SDF_BCH_CW="file2.sdf"
SDF_BCH_RCB="file3.sdf"
SDF_BCH_RCW="file4.sdf"
SDF_TT="file5.sdf"
Then I want to be randomly select from the above list to assign the following two variables.
然后我想从上面的列表中随机选择分配以下两个变量。
SDFFILE_MIN=$SDF_BCH_CW
SDFFILE_MAX=$SDF_TT
How can I do this ?
我怎样才能做到这一点 ?
Thanks
谢谢
回答by Benjamin
Store in array, count and random select:
存储在数组中,计数和随机选择:
#!/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]}
回答by Wolf
Use the built in $RANDOM function and arrays.
使用内置的 $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
This gets two different strings for SDFFILE_MIN and SDFFILE_MAX. If they don't have to be different, remove the if statement in the middle.
这会为 SDFFILE_MIN 和 SDFFILE_MAX 获取两个不同的字符串。如果它们不必不同,请删除中间的 if 语句。