У меня есть сценарий bash, в котором я хочу принять некоторые необязательные входные аргументы, за которыми следует либо имя файла, либо спецификация файла с подстановочными знаками.
Если я бегу
getopts_problem.sh -td *.txt
скрипт успешно выводит список файлов .txt в текущем каталоге:
файл - readme.txt letter_to_editor.txt someotherfile.txt
Если я бегу getopts_problem.sh -td *.ABC
скрипт выводит
файл * .ABC
В текущем каталоге нет файлов с расширением ".ABC". По какой-то причине сценарий интерпретирует «* .ABC» как имя файла. Как я могу заставить скрипт распознавать "* .ABC" как выражение имени файла, которое нужно развернуть, а не как фактическое имя файла? Код выглядит следующим образом:
# !/bin/sh
doDry=0
doTimestamp=0
while getopts ":dt" OPT;
do
case $OPT in
d ) doDry=1 ;;
t ) doTimestamp=1 ;;
? ) echo 'Bad options used. '
exit 1 ;;
esac
done
shift $(($OPTIND - 1))
fileList=$@
for file in "$fileList"
do
echo file is $file
done
exit 0