$ (эхо $RANDOM | cut -b 1 -2 )возвращает пустую строку в сценарии оболочки

Ответ Шили о том, почему это не работает, точен.

Однако на самом деле вы можете перемещать сами точки монтирования в Linux. Заимствуя из примера в вопросе, правильный способ сделать это:

mount --move g/mnt g/m

Целевой каталог (в этом случаеg/m)должен быть допустимым расположением для точки монтирования (каталог должен существовать и т. д. )и вы должны работать с привилегиями root (или CAP _MOUNT ), а в остальном ограничений по сути нет.

Эта операция обновит все управляемые ядром структуры данных, ссылающиеся на эту точку монтирования, включая записи таблицы монтирования (в текущем пространстве имен монтирования ), дескрипторы открытых файлов, корневой и текущий рабочие каталоги для запуска программы и некоторые другие вещи, поэтому (достаточно )безопасно делать это на активно используемой точке монтирования.

Предостережение заключается в том, что все, что запущено и использует пути вместо файловых дескрипторов, может неправильно обрабатывать это (например, перемещение корня вашего веб-сайта таким образом, вероятно, приведет к поломке веб-сайта, потому что большинство веб-серверов не держите открытыми ссылки на все файлы для сайта ).

Вы также можете найти интересную команду pivot_root, это особый случай перемещения точки монтирования (она меняет местами две точки монтирования и обновляет корневой и текущий рабочий каталог всего в системе )и используется во время запуска в большинстве современных систем Linux для переключения с initramfs на настоящую корневую файловую систему.

-1
29.12.2020, 21:38
2 ответа

Используйте bashвместоsh

guess=$(echo $RANDOM | cut -b 1-2)
             ^-----^ SC3028: In POSIX sh, RANDOM is undefined.
5
18.03.2021, 22:40

Флаг -bв cut предназначен для байтов, вместо этого попробуйте использовать флаг -cдля символов.

Я бы также предложил изменить шебанг на #!/bin/bashили #!/usr/bin/env bash. В противном случае он будет использовать системное значение по умолчанию (в Ubuntu, этоdash)с использованием режима POSIX.

2
18.03.2021, 22:40

Теги

Похожие вопросы