Этому есть много решений. Вот один из них:
#!/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
Переменная client
получает значение первого аргумента командной строки.
Оператор case
устанавливает либо CLIENT1_DIR
, либо CLIENT2_DIR
в зависимости от этого значения (или завершается с сообщением об ошибке, если использовалось недопустимое значение).
Затем chef-solo
вызывается с файлом JSON, соответствующим тому, что было указано в командной строке.