Переменные внутри bash-скрипта subshesll - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь запустить команды от имени пользователя root и записать вывод в переменную.Однако переменная "loopdev" возвращается как пустая.

sudo bash << "EOF"
whoami
loopdev=`losetup -f --show "${image}"`
echo "####" $loopdev "####"
EOF

Обычный вывод для этой команды будет выглядеть примерно так:

$ image=sdimage.img
$ sudo losetup -f --show "${image}"
/dev/loop0

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Решением было передать переменную изображения следующим образом:

image=rpi_2.img
sudo image="${image}" bash << 'EOF'
whoami
loopdev=`losetup -f --show "${image}"`
echo "####" $loopdev "####"
EOF

Вывод:

root
#### /dev/loop0 ####
0 голосов
/ 14 октября 2018

Я попробовал вашу проблему, как показано ниже

test=12781278
sudo bash << "EOF"
whoami
loopdev=`echo Hi $test`
echo "####" $loopdev "####"
EOF

И вывод

#### Hi  ####

Для вашей проблемы значение переменной изображения не передается в оболочку bash, которую выначинаем.

...