Como escrever texto contendo $ var em um arquivo bash? [duplicado]

1

Estou com problemas ao escrever case $1 in um arquivo bash. Eu tentei com

cat <<EOT > /etc/init.d/startup.sh
#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

case "$1" in
    start)
        bash /root/install.sh >> /root/installation_log.txt 2>&1
        ;;
    stop|restart|reload)
        ;;
esac
EOT

Mas o problema é que ele grava tudo em startup.sh , mas $1 . Linha

case "$1" in  

torne-se

case "" in 

após a operação.
O que fazer?

    
por haccks 25.08.2016 / 14:51

2 respostas

1

Cite o EOF terminator passado para o operador << (de qualquer forma):

cat << 'EOT' > file
$var
EOT

Ou

cat << \EOT
cat << EO\T
cat << "E"'O'T
cat << ""EOT

Essa é a forma padronizada e documentada para evitar qualquer tipo de expansão dentro da página -documento.

    
por 25.08.2016 / 14:57
1

Altere o primeiro EOT para 'EOT' para evitar a expansão de variáveis

por exemplo

cat <<'EOT' > /etc/init.d/startup.sh
    
por 25.08.2016 / 14:57