Для компиляции набора приложений для нескольких платформ необходимо настроить определенные параметры экспорта сборки.
Пример команды:
source exports_file.sh <plaforms> <feature1> <feature2> <feature3>
Здесь позиционный параметр <platform>
является обязательным, тогда как другие параметры, такие как <feature1>, <feature2>, <feature3>
, необязательны. Их нужно включать только в том случае, если в сборке требуется соответствующая функция.
Набор допустимых параметров командной строки:
source exports_file.sh <plaforms> <feature1> <feature2> <feature3>
source exports_file.sh <plaforms> <feature1> <feature2>
source exports_file.sh <plaforms> <feature1>
source exports_file.sh <plaforms>
Важно отметить, что сценарий должен возвращать ошибку, если:
1) <platform>
параметр ввода не предоставляется пользователем.
2) Значение <platform>
параметра ввода отсутствует в списке, т. Е. Отличается от 1234, 1235 или 1236.
3) Любая другая функция, кроме <feature1>, <feature2>, <feature3>
, предоставляется в качестве входных.
Я написал сценарий, который работает нормально, но я не уверен, правильно ли он проверяет достоверность всех входных параметров.
$> cat exports_file.sh
if [ $# -gt 0 ]; then
platform=$1
# Common exports
unset PLATFORM
unset ENABLE_FEATURE_1
unset ENABLE_FEATURE_2
unset ENABLE_FEATURE_3
echo "INFO: Setting common exports for $platform"
if [ $platform == "1234" ]
then
export PLATFORM=91234
elif [ $platform == "1235" ]
then
export PLATFORM=91235
elif [ $platform == "1236" ]
then
export PLATFORM=91236
else
echo "ERROR: Exports are not defined for $platform."
exit 1
fi
# Check for feature based exports <feature1> <feature2> <feature3>
for var in "$@"
do
if [ $var == "arg2" ]
then
export ENABLE_FEATURE_1=Y
elif [ $var == "arg3" ]
then
export ENABLE_FEATURE_2=Y
elif [ $var == "arg4" ]
then
export ENABLE_FEATURE_3=Y
else
echo "ERROR: unrecognised argument '$var'";
exit 1
fi
done
else
echo "ERROR: No inputs parameters provided to the scripts."
echo "Usage: source exports_file.sh <plaforms> <feature1> <feature2> <feature3>"
fi`
Есть ли способ лучше написать этот скрипт. Самое главное - убедиться в правильности всех входных параметров.