The penultimate trace line there corresponds to this source line:
if [ "${descriptions#*, }" = "$descriptions" ]; then
So why isn't it stripping the first part (/dev/vdb2 and its parenthesis and trailing comma-space) from $descriptions? This is beginning to look like a shell bug, but I can't reproduce it from an interactive shell prompt. Perhaps we're looking at memory corruption here?
The shell trace of the spare failure is thoroughly perplexing:
+ descriptions= /dev/vdb2 (500MB; ext4), /dev/vdb free #1 (1098911MB; FREE SPACE), /dev/vdc1 (98MB; ext4), /dev/vdc2 (500MB; ext4), /dev/vdc free #1 (1098911MB; FREE SPACE) /dev/vdb2 (500MB; ext4)
[...]
+ local description=
+ [ /dev/vdb2 (500MB; ext4), /dev/vdb free #1 (1098911MB; FREE SPACE), /dev/vdc1 (98MB; ext4), /dev/vdc2 (500MB; ext4), /dev/vdc free #1 (1098911MB; FREE SPACE) = /dev/vdb2 (500MB; ext4), /dev/vdb free #1 (1098911MB; FREE SPACE), /dev/vdc1 (98MB; ext4), /dev/vdc2 (500MB; ext4), /dev/vdc free #1 (1098911MB; FREE SPACE) ]
+ descriptions=
The penultimate trace line there corresponds to this source line:
if [ "${descriptions#*, }" = "$descriptions" ]; then
So why isn't it stripping the first part (/dev/vdb2 and its parenthesis and trailing comma-space) from $descriptions? This is beginning to look like a shell bug, but I can't reproduce it from an interactive shell prompt. Perhaps we're looking at memory corruption here?