Сценарий обнаружения подключенного USB-накопителя не работает должным образом

Это довольно сложно сделать, так как в отличие от кавычек, вы не можете просто остановить и перезапустить раскрытие в документе здесь -. Но мы могли бы опубликовать -и обработать здесь -документ с помощью sed:

.

#!/bin/bash
sourcedir=/some/path
sed -e "s,%%sourcedir%%,$sourcedir,g" << 'EOF'
some commands here with $variables not expanded 
except for the special %%sourcedir%%, which is
EOF

Запуск, который производит вывод:

some commands here with $variables not expanded 
except for the special /some/path, which is

Команда sedпросто заменяет все экземпляры %%sourcedir%%любым значением $sourcedir(, если оно не содержит запятых; вам нужно будет изменить разделитель для команды sна что-то другое.)

Для ясности я изменил заполнитель на другой формат, но вы также можете оставить его как $sourcedir, а затем использовать sed -e "s,\$sourcedir,$sourcedir,". (Хотя обратите внимание, что он также будет соответствовать $sourcedirectoryи другим подобным переменным, но не ${sourcedir}, даже если это будет эквивалентно в оболочке.)

В качестве альтернативы используйте GNUenvsubstдля документа, если он у вас есть (он является частьюgettext):

#!/bin/bash
export sourcedir=/some/path
envsubst '$sourcedir' << 'EOF'
some commands here with $variables not expanded 
except for the special $sourcedir, which is
EOF

0
12.06.2020, 10:47
0 ответов

Теги

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