Думаю, я разобрался с этим. Все еще интересно, как другие решают эту проблему:
cat > script.sh <<'EOF'
#!/bin/bash -ex
hi='hello world!'
echo $hi
EOF
В качестве примечания, похоже, что freebsd требует:
cat > script.sh <<'EOF'
#!/bin/bash -ex
hi='hello world!'
echo $hi
'EOF'
Эта строка взята из сценария оболочки csh
. Он устанавливает переменную file
в пустую строку. #empty
в конце строки — это комментарий. Однако оболочка csh
не любит комментарии в этом контексте и будет жаловаться на
set: Variable name must begin with a letter.
Чтобы исправить это, переместите комментарий на строку перед назначением:
# set 'file' to an empty string
set file=""