Você precisa perceber que seu primeiro exemplo tem apenas um parâmetro, e a maneira como é citado é apenas um detalhe. Estes são idênticos:
SomeScripts.sh "First=Harvey Lo","Third=Rebecca Won","Second=laugh at"
SomeScripts.sh "First=Harvey Lo,Third=Rebecca Won,Second=laugh at"
Portanto, a maneira de fazê-lo funcionar é não para colocar \"
dentro da variável - em vez disso, você precisa citá-lo enquanto está sendo definido:
SOMEVAR="First=Harvey Lo","Third=Rebecca Won","Second=laugh at"
Mais uma vez, isso é equivalente a um simples
SOMEVAR="First=Harvey Lo,Third=Rebecca Won,Second=laugh at"
Você também precisa citar a variável quando ela é usada, caso contrário, ela estará sujeita à divisão de palavras depois de ser expandida. (A divisão de palavras aqui significa apenas a divisão por espaços.) O mesmo se aplica à substituição ' '
.
SomeScripts.sh "$SOMEVAR"
Tente compilar este programa e executá-lo com argumentos diferentes - ele mostrará exatamente o que ele recebe como argumentos.
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("argc = %d\n", argc);
for (argc=0; argv[argc]; argc++)
printf("argv[%d] = %s\n", argc, argv[argc]);
return 0;
}