Я до сих пор не знаю, как использовать драйвер nvidia в ядре, но мне, по крайней мере, удалось успешно загрузить компьютер с работающим x-сервером.
После установки ядра отредактируйте / etc / default / grub
и добавьте nomodeset
в строку с GRUB_CMDLINE_LINUX_DEFAULT
.
GRUB_CMDLINE_LINUX_DEFAULT="quiet nomodeset"
Сохраните файл и выполните
sudo update-grub
Тем не менее, проблема кажется нерешенной, поскольку при загрузке компьютера я вижу что-то вроде [Failed]
в журнале загрузки. Но, по крайней мере, это работает. : (
Проще всего сделать это для собственного использования, просто разбив heredoc на две части:
cat > run_array_job.sh<<'EOF'
#!/bin/bash -l
...
EOF
printf 'BASEDIR="%s"\n" "$sourcedir" >> run_array_job.sh
cat >> run_array_job.sh<<'EOF'
echo "BASEDIR" echo $BASEDIR
...
EOF
qsub -t 1-${num_files} run_array_job.sh
Это просто создает первую часть файла, добавляет единственную строку, для которой вы хотели, чтобы переменная была доступна в конце этой первой части, используя >>
, а затем соединяет остальную часть документа в конце в том же способ.
В конце вы получите тот же связный файл, только написав всего пару дополнительных строк. Если у вас есть несколько переменных для передачи, вы также можете указать их все одновременно.
Это довольно сложно сделать, так как в отличие от кавычек, вы не можете просто остановить и перезапустить раскрытие в документе здесь -. Но мы могли бы опубликовать -и обработать здесь -документ с помощью 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