Извлекайте шахты только из файла - Mime-type, чтобы использовать в Af-else в скрипте Bash

Я обнаружил, что эта команда дает мне тип MIME из файла:

file --mime-type dog.jpeg 

Вывод:

dog.jpeg: image/jpeg

Теперь я пытаюсь создать Bash Crelects, если MIME является JPEG OG PNG. Однако я немного застрял:

#!/bin/bash
$file_mime="file --mime-type dog.jpeg"
mime=`"${file_mime#*:}"`

if(mime=='image/jpg' OR mime=='image/png') do:
    echo"Jpg or png"
done

Выход:

./bash.sh: line 2: =file --mime-type dog.jpeg: command not found
./bash.sh: line 3: : command not found
2
задан 13 February 2021 в 14:40

2 ответа

Ваша первая ошибка заключается в том, что у вас есть префикс $ на вашем назначении. Ваша вторая ошибка заключается в том, что вы пытаетесь объединить выполнение команды с обработкой результатов (отчитывая имя файла из результата). Как всегда с сценарием Bash, есть много способов достижения того же, поэтому это всего лишь один, попробуйте:

#!/bin/bash

mime=$(file -b --mime-type dog.jpeg)

if [[ $mime = image/@(jpeg|png) ]]; then
    echo "File is a jpeg or png."
fi

затем оценивать $ MIME , но я предлагаю вам поиск и читать на некоторых учебниках сценариев Bash Если утверждения и т. Д. В качестве вашего , если выписка не является действительным скриптом Bash.

5
ответ дан 18 March 2021 в 23:34

Декларация переменных в Bash без знак доллара $ :

var="foo"
echo "$var"
foo

Теперь вы хотите выполнить замену команды, файл переменную, являющийся результатом команды - Mime-Type Dog.jpeg . Способ сделать это:

# now the output of the command is stored in the variable
file_mime=$(file --mime-type dog.jpeg)

Теперь вы можете эхо переменную:

echo "$file_mime"
dog.jpeg  image/jpeg

и получить тип MIME:

mime=$(echo "$file_mime" | awk '{ print $2 }')
echo "$mime"
image/jpeg

1
ответ дан 18 March 2021 в 23:34

Другие вопросы по тегам:

Похожие вопросы: