Написание скрипта bash из другого скрипта в буквальном режиме
В bash
сценарий я создаю другой bash
скрипт для запуска программы:
$optionsfile="options.conf"
tee "launch-script.sh" > /dev/null <<EOF
#!/bin/bash
bash $binFile `cat $optionsfile` &
EOF
Я хочу выходной скрипт launch-script.sh
быть таким:
#!/bin/bash
bash $binFile `cat options.conf` &
Поэтому я хотел бы иметь сценарий для расширения $optionsfile
но не выполнять cat
команда. Теперь я получаю:
#!/bin/bash
bash $binFile -ops1 -ops2 -ops3 &
Можно ли этого добиться? Я что то не так делаю?
РЕДАКТИРОВАТЬ:
Используя ответы и комментарии, я обнаружил, что лучшим решением будет экранирование:
$optionsfile="options.conf"
tee "launch-script.sh" > /dev/null <<EOF
#!/bin/bash
bash $binFile \$(< $optionsfile) &
EOF
2 ответа
Решение
Используйте обратную косую черту, чтобы предотвратить интерполяцию:
tee "launch-script.sh" > /dev/null <<EOF
#!/bin/bash
bash \$binFile \`cat $optionsfile\` &
EOF
Работает ли нормальный побег?
tee "launch-script.sh" > /dev/null <<EOF
#!/bin/bash
bash \$binFile \`cat $optionsfile\` &
EOF