Написание скрипта 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
Другие вопросы по тегам