If there is a better way to approach the overall situation, it might be at a higher level; for example I would wonder why aren't some sort of arrays, lists, etc. being used? If such things aren't formally available at some level of the environment that's in use, perhaps they could be done in a more or less synthetic fashion ala A="element_1,element_2".
But as has already been mentioned, more details would be helpful. Looking at just the snippet of code that's been provided, I have to wonder why not:
Code:
SUPPORTED_CONTROLLERS_ADAPTEC="ASR8805,ASR8885";
or even:
Code:
SUPPORTED_CONTROLLERS="ASR8805,ASR8885";
If there are controllers made by different manufacturers involved, and there is some concern that two manufacturers might happen to use the same model ID, then maybe something like this might work, creating a single overall list that has labeled sub-sections:
Code:
SUPPORTED_CONTROLLERS="ADAPTEC:ASR8805,ASR8885;JOEBOBS:AK47,AR1;MA_AND_PA:APPLE_PI_314,CHERRY_PI_159";
If something like awk might be run repeatedly during some overall procedure, and there's any significant amount of data, then if the choices were amongst bash, grep, awk, and sed, I might be tempted to write the majority of the program code in some form of awk ( perhaps gawk if it's available ) .
Finally, if other languages could be used, if the program is to be written for a specific environment, and expected to remain there, and there is a *lot* of data, I would probably use a language that actually compiles to an executable binary, if that's a possibility in this case.
But without all the details, we can just speculate about different possibilities.