TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #279 1.14K
Эмуляция очереди и стека в Bash: играем с массивами как в CS101

В bash можно не только писать условия и циклы, но и реализовать базовые структуры данных. Сегодня - очередь (FIFO) и стек (LIFO) - с помощью обычных массивов.

▪️ Стек (LIFO). Последним пришел - первым ушел.


stack=()

# push
stack+=("первый")
stack+=("второй")

# pop
last_index=$(( ${#stack[@]} - 1 ))
echo "POP: ${stack[$last_index]}"
unset 'stack[$last_index]'


После этого в стеке остается только "первый".

▪️ Очередь (FIFO). Первым пришел - первым ушел.


queue=()

# enqueue
queue+=("alpha")
queue+=("beta")

# dequeue
echo "DEQUEUE: ${queue[0]}"
queue=("${queue[@]:1}")


Мы просто “срезаем” массив начиная с элемента 1.

▪️ Пример: обработка задач в очереди


queue=("job1" "job2" "job3")

while [[ ${#queue[@]} -gt 0 ]]; do
task="${queue[0]}"
echo "Processing $task"
queue=("${queue[@]:1}")
done


▪️ Условно реальный стек


push() { stack+=("$1"); }
pop() { echo "${stack[-1]}"; unset 'stack[-1]'; }
peek() { echo "${stack[-1]}"; }


С bash версии 4+ можно использовать [-1] для получения последнего элемента.

🌟 Минусы:

📍 Нет указателей, только пересоздание массива;
📍 Производительность не сравнима с языками типа Python, но работает.

BashTex 📱 #bash #utils
  • 👍 8
More from @bash_tex
  1. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  2. Oct 9, 2026BashTex 📱 #мем
  3. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  4. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  5. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  6. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →