2016-12-12 1 views
-1

У меня есть папка, которая будет иметь имя файла на основе используемой версии python.Справка по скрипту Bash: как создать команду в скрипте на основе совпадающих символов в файле

PyICU-1.9.5-cp27-cp27m-macosx_10_6_x86_64.whl 
PyICU-1.9.5-cp35-cp35m-macosx_10_6_x86_64.whl 

Я хочу использовать Баш для обнаружения 35 или 27, а затем выполнить pip install <filename>. У меня есть GitHub Gist that has this hard coded, но вместо жесткого кодирования имени файла я хотел бы определить версию, выбрать имя файла с этой версией и использовать ее в новой команде.

Я хотел бы изменить команду pip install на основе имени файла. Я нашел код для обнаружения версии python; какая следующая штука?

#from http://stackoverflow.com/questions/6141581/detect-python-version-in-shell-script 
python -c 'import sys; print(sys.version_info[:])' 

Как обнаружить число после сП, так что я могу построить это: обнаружен 34, так: pip installPyICU-1.9.5-cp34-cp34-macosx_10_6_x86_64.whl

ответ

0
#!/bin/bash 
#Assuming $ver holds the version string... 
ver=$(echo "$ver" | awk -F - '{print $3}' | sed 's/^..//') 

Для более подробного объяснения;

awk -F - '{print $3}' использует - как разделитель полей и возвращает третье поле. Третье поле в этом примере возвращается как cp34.

sed 's/^..//' удаляет первые два символа и возвращает остальное, в данном случае 34.

0

Поскольку вы даже не нужно извлечь версию из файла, а просто выполнить файл, который находится в папке, то вы можете сделать:

cd dist/ && 
filename=$(ls|grep 'PyICU-') 
pip install $filename