Извлечь первые 2 каталога по пути

постфикс выполняет mailbox_command с uid получателя. Это должно сделать -d $ {USER} ненужным.

http://www.postfix.org/postconf.5.html#mailbox_command

mailbox_command (по умолчанию: пусто)
Необязательная внешняя команда, которую локальный (8) агент доставки должен использовать для доставки в почтовый ящик. Команда запускается с идентификатором пользователя и привилегиями идентификатора основной группы получателя. Исключение: доставка команд для root выполняется с привилегиями $ default_privs.

0
04.05.2018, 19:48
3 ответа

Две альтернативы. Последний вариант более запутан, но безопаснее, так как не требует, чтобы вы знали, сколько каталогов содержится в переменной:

$ echo ${ORACLE_HOME%/*/*/*/*}/
/oradba/app/
$ echo $ORACLE_HOME | awk -F/ 'BEGIN {OFS="/"} {print $1,$2,$3,""}'
/oradba/app/
0
28.01.2020, 02:23
  1. С помощью выреза (закрепки на конце/):

    ORACLE_HOME=$(printf "%s" "$ORACLE_HOME" | cut -d/ -f1-3)/
    
  2. Использование расширения параметра дважды; первый удаляет первые два элемента каталога, затем второй удаляет оставшиеся элементы исходной переменной:

    suffix=${ORACLE_HOME#/*/*/}
    ORACLE_HOME=${ORACLE_HOME%"$suffix"}
    
3
28.01.2020, 02:23

Попробуйте:

echo $ORACLE_HOME | cut -d/ -f-3

Например:

$ ORACLE_HOME=/oradba/app/oracle/product/11.2.0.4/testdb
$ echo $ORACLE_HOME | cut -d/ -f-3
/oradba/app
$
0
28.01.2020, 02:23

Теги

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