Код, который я разработал вчера, принимает в качестве входного файла либо файл (x.txt), либо пробел (434 435 436 437), а также толкает данные случай в массиве и проходит через.Запуск оболочкиScript с флагами для аргументов командной строки
Syntax: shtest.sh 434 435 436 or sh test.sh x.txt
MYFILE=$1 ;
OLDIFS=$IFS;
IFS=' ';
if [ -f "$MYFILE" ]; then
testCases=($(cat $MYFILE));
else
testCases=([email protected]);
fi
for testCase in "${testCases[@]}"
do
echo "Running Testcases $testCase"
done
Путь я хочу сделать это, чтобы сделать его менее подвержен ошибкам
Я хотел бы на самом деле иметь флаг во время работы над скрипт с файлом как paramenter
ш test.sh -f myfile.txt
или Может быть запущена с -t flasg с числами в качестве аргументов
ш test.sh -t 435 436 434
, если оба -f и -t существуют, то я должен проверить и выдаст ошибку
пример: ш test.sh -f -t myFile.sh 343 435 435 или ш test.sh -t 343 435 435 -f myFile.sh
Я начал работать на Shell Scripting только вчера, и IAM действительно короткий, как сделать это синтаксически
Наконец, Если мы указали файл с флагом или аргументом с флагом (No Unfalgged вообще), будет ли код ниже работать или будет иметь любые вопросы Синтаксис:
sh test.sh -f myFile.txt #should work
sh test.sh -t 443 444 443 443 # should work
sh test.sh -f myFile.txt -t 443 444 443 443 # should fail
isFile=0;
isTest=0;
while getopts ":f:c:t:" opt; do
case $opt in
f)
echo "-f was triggered, Parameter: $OPTARG" >&2
testCases=($(cat $OPTARG));
isFile=1;
;;
t)
# testCases=([email protected]);
multi+=("$OPTARG")
for val in "${multi[@]}"; do
echo " - $val"
done
;;
c)
echo "-c was triggered, Parameter: $OPTARG" >&2;
isTest=1;
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
# Exit if both flags are sent
if [ isTest==1 && isFile==1 ]; then
{
echo "Exiting";
}
fi
#if the flag is not avaiable, the store the orphan numbers (Command Line Arguments)
for testCase in "${testCases[@]}"
do
echo "Running Testcases $testCase"
done
Пожалуйста, советы и любая помощь приветствуется.
Благодаря Tejas
Что делает сдвиг $ (($ OPTIND - 1)), и что, если есть флаги для обоих чисел и файлов ... Написал новый код для этого сценария. Check check and advice – user2256825
«shift» удаляет параметры которые были использованы «getopts» из '' $ @ "' (список позиционных параметров), оставляя только аргументы без опционов. Показанный код уже принимает как файл, так и некоторые числа; он требует только файл или некоторые номера, но не диагностирует как файл, так и некоторые номера. Отрегулируйте тесты в соответствии с вашими потребностями. –
Да, теперь требование имеет флаги для обоих чисел и файла. Я попробую взглянуть на код ур и поменю на меня соответствующим образом, спасибо – user2256825