Как сохранить команду вывода в переменной и снова использовать эту варуту для следующей команды после трубы

Как сказано, проблема заключалась в монтировании / tmp с noexec. Объяснение довольно простое: некоторые установочные скрипты распаковывают исполняемые файлы / скрипты в / tmp, а затем пытаются их запустить.

Я случайно наткнулся на эту проблему несколько месяцев назад, когда изменил пару серверов / tmp на noexec по соображениям безопасности, а затем перестали работать сценарии установки / обновления некоторых пакетов Debian. Поскольку я специально изменил его, в то время было довольно легко определить проблему.

Я по-прежнему считаю хорошей идеей установить / tmp на noexec на общедоступных веб-серверах, однако до сих пор я не особо исследовал, как обойти эту конкретную проблему.

0
26.07.2018, 13:51
2 ответа
dev=$(lsblk | awk '$1 ~ /^sd/ {print $1; exit}')
if [ -n "$dev" ]; then
  dev=/dev/$dev
  parted "$dev" mklabel gpt mkpart primary "1 -1" -s
fi

Теперь, если вам нужен первый sd?диск, это может быть проще сделать:

shopt -s nullglob; set -- /dev/sd[a-z]
if (($# > 0 )); then
  parted "$1" mklabel gpt mkpart primary "1 -1" -s
fi

Или сделать это для каждого диска:

shopt -s nullglob
for dev in /dev/sd[a-z]; do
  (set -x; parted "$dev" mklabel gpt mkpart primary "1 -1" -s)
done
1
28.01.2020, 02:42

Просто сохраните в переменную и обработайте ее.

input=$(lsblk | awk {'print $1'} | grep ^sd); \
parted $input mklabel gpt mkpart primary "1 -1" -s
0
28.01.2020, 02:42

Теги

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