У меня есть сценарий bash, который я хочу взять с некоторыми необязательными аргументами ввода, за которым следует либо имя файла, либо спецификация файла, содержащая подстановочные знаки.Как использовать подстановочный знак с getopts в сценарии 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))
[email protected]
for file in "$fileList"
do
echo file is $file
done
exit 0
Возможный дубликат [Управление расширением подстановок командной строки оболочки на C или C++] (http://stackoverflow.com/questions/2617453/controlling-shell-command-line-wildcard-expansion-in-c-or-c) – Matt