LinuxForum.Fans
Тема

Экранирование в bash

Автор: asco_ne 4 сообщений 1208 просмотров
22.02.2018 20:59 · отредактировано #428182

Решил написать скрипт установки Docker. и столкнулся с проблемой экранирования. А именно, вот скрипт

text
#!/bin/bash

sudo apt update && sudo apt upgrade

sudo apt install linux-image-extra-$(uname -r) linux-image-extra-virtual

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

sudo apt-add-repository 'deb [url]https://apt.dockerproject.org/repo[/url] ubuntu-xenial main'

sudo apt update && apt-cache policy docker-engine sudo apt install -y docker-engine

sudo usermod -aG docker $(whoami)

sudo systemctl status docker

А вот проблема:

text
sudo apt install linux-image-extra-$(uname -r) linux-image-extra-virtual

Знак $ bash распознает как переменную. Пытался использовать \ и ' '. но не помогает. Как сделать правильно?

22.02.2018 21:32 #428183

asco_ne, насколько я понял, Вам надо отдельно формировать переменную и подствлять уже готовую.

23.02.2018 07:27 · отредактировано #428187

И что не так?
bash должен выполнить команду

text
uname -r

и подставить результат вместо

text
$(uname -r)

Ничего экранировать тут не надо.

P.S. Для текста скрипта лучше подходит тег code, а не console.

23.02.2018 10:32 #428190

пробовал через переменную, - работает вроде, но там сейчаc другие ошибки выскакивают, на других шагах, пока сморю что может быть

Войдите или зарегистрируйтесь, чтобы ответить.