Existem muitas soluções para isso. Aqui está um:
#!/bin/bash
client="$1"
case "$client" in
"client1") export CLIENT1_DIR="<path1>" ;;
"client2") export CLIENT2_DIR="<path2>" ;;
*) printf 'Invalid client argument: %s\n' "$client" >&2
exit 1 ;;
esac
chef-solo -c solo.rb -j "$client".json
A variável client
obtém o valor do primeiro argumento de linha de comando.
A instrução case
define CLIENT1_DIR
ou CLIENT2_DIR
dependendo desse valor (ou sai com uma mensagem de erro se um valor inválido for usado).
Em seguida, chef-solo
é invocado com o arquivo JSON correspondente ao que foi fornecido na linha de comando.