Создать файл, расширяющий одну переменную, но не другую

Вы пробовали, (Я проверял между прочим );

  1. Щелкните правой кнопкой мыши любое окно с рамкой в ​​KDE.

  2. Дополнительные параметры > Параметры специального приложения > Размер и положение >

  3. Установите флажок «Свернуть», установите «Принудительно», установите «Нет». Нажмите «ОК» внизу.

  4. Проверь!


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

Я полагаю, что правильное решение было бы в KDE, например, путем обмана в Системных настройках > Управление окнами > Правила Windows.

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

0
06.01.2020, 10:37
1 ответ
EXPAND=value
cat <<EOF >  file.sh
$EXPAND
\$PRINTLITERALLY
EOF

создаст file.shс

value
$PRINTLITERALLY

как содержание.

(вам нужно будет добавить обратную косую черту перед каждым вхождением $или `, если вы не хотите, чтобы соответствующее расширение параметра, арифметическое расширение или подстановка команд были расширены. И вам также нужно экранировать некоторые символы обратной косой черты ).

Другой подход:

cat - << EXPANDED /dev/fd/3 3<< 'NOT-EXPANDED' /dev/fd/4 4<< EXPANDED-AGAIN > file.sh
$EXPAND
`echo test`
...
EXPANDED
$PRINTLITERALLY
`echo test`
...
NOT-EXPANDED
$EXPAND
...
EXPANDED-AGAIN

Документы здесь, в которых указан разделитель (, как и в 3<< 'NOT-EXPANDED'выше ), не подвергаются расширениям оболочки, поэтому вы можете выбрать разделы, в которых расширения выполняются, а некоторые — нет.

С учетом вышеизложенного вы получите:

value
test
...
$PRINTLITERALLY
`echo test`
...
value
...

Если вы хотите расширить только один конкретный набор переменных, где бы они ни появлялись, оставив нерасширенными все остальные расширения параметров, подстановки команд, арифметические расширения, вы можете использовать утилиту envsubst, поставляемую с GNU gettext.

Однако обратите внимание, что он расширяет только $varи ${var}, а не какую-либо другую форму расширения параметра, включающую переменную $var(, например ${var#?}, ${var[x]}...)

EXPAND=value EXPAND_AS_WELL=othervalue
export EXPAND EXPAND_AS_WELL
envsubst '$EXPAND$EXPAND_AS_WELL' << '__end_of_envsubst__' > file.sh
$EXPAND ${EXPAND} ${EXPAND#?} ${EXPAND[0]} $EXPAND[0] $EXPANDÉ \$EXPAND
$PRINTLITERALLY $EXPAND_AS_WELL
`echo test`
__end_of_envsubst__

дает:

value value ${EXPAND#?} ${EXPAND[0]} value[0] valueÉ \value
$PRINTLITERALLY othervalue
`echo test`

Подробную информацию см. в info gettext envsubst.

5
28.01.2020, 02:15

Теги

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