Как получить расширение файла в сценарии оболочки - PullRequest
11 голосов
/ 28 февраля 2010

Я пытаюсь получить расширение файла для файла в сценарии оболочки. Но без всякой удачи.

Используемая мной команда:

file_ext=${filename##*.}

и

file_ext = $filename |awk -F . '{if (NF>1) {print $NF}}'

Но обеим командам не удалось поместить значение в переменную file_ext. Но когда я пытаюсь

echo $filename |awk -F . '{if (NF>1) {print $NF}}'

Это дает мне желаемый результат. Я новичок в сценарии оболочки. Пожалуйста, опишите ситуацию, что происходит. А также как мне это сделать?

Спасибо.

Ответы [ 3 ]

22 голосов
/ 01 марта 2010

, чтобы получить расширение файла, просто используйте оболочку

$ filename="myfile.ext"
$ echo ${filename##*.}
ext
$ file_ext=${filename##*.} #put to variable
$ echo ${file_ext}
ext
13 голосов
/ 28 февраля 2010

Пробелы болят.

В любом случае, вы должны сделать:

file_ext=$(echo $filename |awk -F . '{if (NF>1) {print $NF}}')

Это сохранит в $ file_ext выходные данные команды.

3 голосов
/ 28 февраля 2010

Вы должны быть осторожны при объявлении переменных.

variable1="string"    # assign a string value
variable3=`command`   # assign output from command
variable2=$(command)  # assign output from command

Обратите внимание, что вы не можете поставить пробел после переменной, потому что тогда она интерпретируется как обычная команда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...