Это, наверное, глупый вопрос, больше из любопытства. У меня есть массив в Баш:Как назначить диапазон с использованием длины массива?
array=(name1.ext name2.ext name3.ext)
Я хочу, чтобы сдирать расширение от каждого элемента. Я пытался сделать это с помощью цикла по каждому элементу, но я с настройкой диапазона петли проблемы (см):
for i in 'echo {0..'expr ${#array[@]} - 1'}'; do newarray[$i]+=$(echo "${array[$i]:0:5}"); done
Пожалуйста, обратите внимание, "=„назад-тик“в code- потому что я не был уверен, как избежать этого.
Я не могу использовать только заданный диапазон (например, seq 0 3), потому что он изменяется в зависимости от папки, поэтому я хотел иметь возможность использовать длину массива минус 1. Я смог обойти это с помощью:
for ((i=0; i<${#array[@]}; i++)); do newarray[$i]+=$(echo "${array[$i]:0:5}"); done
Но я думал, что должен быть какой-то способ сделать это с «длиной массива минус 1» выше способом, и спрашивает, как я думал об этом неправильно. Любые указатели оцениваются.
Спасибо! Dan
процитировать 'обратно tick' внутри«дублирующей галочкой»блок, просто избежать обратно клеща, например,' '\ убежал обратно tick'. – Jdamian
Я не могу понять, что вы хотите получить, и в чем проблема. – Jdamian
Я понял, что вы хотите запустить массив с помощью последовательности индексов, а не увеличивать счетчик, но я не понимаю проблему. – Jdamian