2016-06-29 2 views
0

Как проверить, завершена ли команда оболочки некоторым текстом? Например, если я типаПроверка командной строки Linux (bash)

$ http://example.com/file.webm 

(заканчивается .Webm) он будет автоматически заменен

$ wget http://example.com/file.webm 

Конечно, только если команда состоит из одной части.

Я использую bash как свою оболочку.

+1

Если вы укажете конкретную оболочку, такую ​​как 'bash' или' zsh', тогда вы можете получить ответ о том, как это сделать могут быть реализованы в этой оболочке. – Kusalananda

+0

Это может быть оболочка bash. – user6390359

+0

Что вы подразумеваете под концами каким-то текстом? – AQU

ответ

3

bash 4 обеспечивает крючок для обработки ошибки «команда не найдена». В этом случае, http://example.com/file.webm не будет правильная команда, поэтому определить следующую функцию в .bashrc файле:

command_not_found_handle() { 
    if [[ $1 = http://*.webm ]]; then 
     wget "$1" 
    else 
     return 127 
    fi 
} 

При попытке запустить URL в качестве команды, command_not_found_handle будет вызываться с URL в качестве первого аргумент. Функция проверяет, совпадает ли имя команды с URL-адресом webm, и если это так, выполняется wget с URL-адресом в качестве аргумента. (Для любой другой непризнанной команды, просто верните 127, команда еще непризнанная.)

Смежные вопросы