There are many solutions to this. Here's one:
#!/bin/bash
client="$1"
case "$client" in
"client1") export CLIENT1_DIR="
"client2") export CLIENT2_DIR="
*) printf 'Invalid client argument: %s\
' "$client" >&2
exit 1 ;;
esac
chef-solo -c solo.rb -j "$client".json
The `client` variable gets the value of the first command line argument.
The `case` statement sets either `CLIENT1_DIR` or `CLIENT2_DIR` depending on this value (or exits with an error message if an invalid value was used).
Then `chef-solo` is invoked with the JSON file corresponding to what was given on the command line.