devlist is an string. It will change to an array if there is disk that is sbd disk. If one device is sbd, it runs devlist=(). This line code changes devlist from a string to an array. If there is no sbd device, it can't run this line code. So it will still be a string. The later codes need an array, rather than an string. So init devlist as an array to fix this problem. Signed-off-by: Xiao Ni <xni@xxxxxxxxxx> --- clustermd_tests/func.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clustermd_tests/func.sh b/clustermd_tests/func.sh index 642cc96..801d604 100644 --- a/clustermd_tests/func.sh +++ b/clustermd_tests/func.sh @@ -39,6 +39,9 @@ fetch_devlist() devlist=($(ls /dev/disk/by-path/*$ISCSI_ID*)) fi # sbd disk cannot use in testing + # Init devlist as an array + i='' + devlist=(${devlist[@]#$i}) for i in ${devlist[@]} do sbd -d $i dump &> /dev/null -- 2.7.5