Existe um espaço depois de VRC
. Remova-o.
Estou tentando usar blocos HEREDOC aninhados em um script bash.
Nota
sudo
cat
em um arquivo. # run some commands as regular user
sudo -s -u $reg_user << EOF
echo "installing Pathogen plugin manager"
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
# start the nested HEREDOC
#-----------------------------
#
echo "configuring \.vimrc"
cat <<-VRC >> ~/.vimrc
"
"======================================================
" vim core settings
"======================================================
"
" show numbers - to turn off :set nonumber
set number
" always show status bar
set laststatus=2
VRC # limit string to close the inner HEREDOC
echo "more bash commands"
EOF # end the outer HEREDOC - NOTE: this is also the end of the
# entire script itself
Quando esse script é executado, a saída é:
/bin/bash: line 229: EOF: command not found
Por que o bash acha que EOF
é um comando e não a string de delimitação HEREDOC
update: aqui está uma versão simplificada do script que tem código executável copy and pastable - que parece produzir o mesmo erro ish
#! /bin/bash
# If you want to run this code you need to assign a valid user here
user="non-root user"
# run some commands as regular user
sudo -s -u $user << EOF
echo "installing plugins"
mkdir -p testdir
# start the nested HEREDOC
#-----------------------------
#
echo "configuring \.config_file"
cat <<-VRC >> /tmp/test_vimrc
"
"======================================================
" vim core settings
"======================================================
"
" show numbers - to turn off :set nonumber
set number
" always show status bar
set laststatus=2
VRC
echo "more bash commands"
EOF
erro de saída é:
/bin/bash: line 22: warning: here-document at line 8 delimited by end-of-file (wanted 'VRC')
Tags bash here-document