Я новичок в Unix. Приношу свои извинения, если вопрос звучит слишком неубедительно.
Я передам аргумент переменной fullstring=$1
. Вход для этой переменной может быть чем-то похожим на эти параметры, например, tester.txt или tester.sh, или testapiece.zip, или testing.bad, или *.*
В основном это что-то вроде строки, содержащей шаблон подстановочного знака имени файла вместе с типом файла.
Здесь мне нужно вырезать только тип файла из строки, переданной в аргументе, т.е. в основном мне нужно вырезать строку из "." до конца, и мне нужно сравнить его с несколькими строками в предложении IF.
Схема структуры кода будет похожа на структуру ниже:
IF substring of variable(just the filetype in the variable) is not equals to any of the set of 4 predefined file type strings (txt,zip,csv,*)
THEN
ECHO "file is not in the required file type"
EXIT
ELSE
ECHO "file is in required file type"
FI
Было бы полезно, если бы кто-нибудь мог помочь мне с условием сравнения в предложении IF. Заранее спасибо.
Примечание: мы можем передать буквальный *
в качестве типа файла, его следует буквально сравнивать с *
.txt
расширение,.zip
может означать несколько вещей и т. Д. Вы можете / должны сначала проверить фактический тип, и затем проверьте расширение, если необходимо. Вы можете получить mime-тип, используяfile --brief --mime <filename>
- если он говорит application / zip; charset = binary, вам все равно, что это за расширение, но если в нем написано text / plain; charset = ‹something›, вам может быть интересно,.csv
или.txt
или вообще без расширения. - person Stephen P   schedule 25.05.2017passing an argument to a variable
- вы не передаете аргументы переменным, вы передаете аргументы скриптам, программам, функциям и т. д. Вы присваиваете значения переменным. wrtneed to cut just the file type
- в имени файла нет типа. Может быть такой суффикс, как .txt, но это не значит, что это текстовый файл, это может быть электронная таблица Excel или что-то еще. Чтобы определить тип файла, вы используете командуfile
для анализа его содержимого. - person Ed Morton   schedule 25.05.2017