Я работаю над инструментарием для компании, на которую я работаю, проблема, один из инструментов в этом 'наборе' должен иметь способность распознать архитектуру, я уже получил работу 32 и 64 битов, но я не могу заставить руку работать, кто-либо может помочь? это - то, что я получил и потребность..
if [ "$arch" == 'armv' ];
then
echo "ARM Architecture
То, что я хочу, чтобы это сделало, - то, что, когда архитектура руки (6 или 7 я действительно не забочусь о той точке) обнаруживается, что это просто говорит, что архитектура руки, но я уже попытался редактировать
if [ "$arch" == 'armv' ];
кому:
if [ "$arch" == 'armv*' ];
Если бы кто-то знает решение, любая справка приветствовалась бы.
О, и я использую оболочку/удар, потому что они не хотят дополнительных программ на машинах, таким образом, я использую удар и оболочку, пишущую сценарий, таким образом, у них есть свои собственные программы :)
------------------РЕДАКТИРОВАНИЕ------------------
Вот код полностью так Вы, у парней может быть идея того, что я пробую
arch=$(uname -i)
if [ "$arch" == 'x86_64' ];
then
echo "X64 Architecture"
fi
if [ "$arch" == 'x86_32' ];
then
echo "X32 Architecture"
fi
if [ "$arch" == 'armv*' ];
then
echo "Arm architecture"
fi
Ваш шаблон работал бы, если Вы будете использовать bash
ключевое слово, [[
, вместо [
(test
) встроенный и удаляют кавычки из шаблона шарика:
[[ $arch == arm* ]] && echo 'This is ARM Architecture'
Можно также использовать соответствие Регулярного выражения с помощью [[
ключевое слово и =~
оператор:
[[ $arch =~ ^arm ]] && echo 'This is ARM Architecture'
^arm
проверки, ли переменная $arch
содержит arm
в запуске (маркер Regex ^
соответствует запуску строки).
Кроме того, для архитектуры на 32 бита, uname -i
должен показать i386
или i686
или i486
, нет x86_32
.
На другой ноте необходимо использовать elif
создайте скорее то использование if
три раза это было разработано для задач как это. Таким образом, Ваш полный сценарий может быть переписан как:
arch=$(uname -i)
if [[ $arch == x86_64* ]]; then
echo "X64 Architecture"
elif [[ $arch == i*86 ]]; then
echo "X32 Architecture"
elif [[ $arch == arm* ]]; then
echo "ARM Architecture"
fi
Если Вы не можете использовать измы Bash как [[ ... ]]
, можно также использовать case
блоки для строк совпадения шарика и ответвления согласно результату соответствия:
case "`uname -i`" in
x86_64|amd64)
echo X64;;
i?86)
echo X32;;
arm*)
echo ARM;;
powerpc|ppc64)
echo PowerPC;;
esac
case
блоки могут также быть более читаемыми, чем серия if ... then ... elif
блоки, если существует больше чем 2 или 3 ответвления.