Como eu uso redirecionamentos “EOL” e bash para pipar um trecho de código para um arquivo usando “cat”?

0

Eu quero enviar um trecho de código para um arquivo chamado $x .

No entanto , estou recebendo um erro de sintaxe em <<-- .

Código

cat > "$x" <<-- EOF
# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
#auto lo wlan0
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
#iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface $interface inet static
        address 192.168.50.5
        netmask 255.255.255.0
        network 192.168.50.0
        broadcast 192.168.50.255
allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
EOF
    
por Nicholas Adamou 12.01.2018 / 13:56

1 resposta

1
cat < "$x" <<-- EOL

Eu não acho que seja um erro de sintaxe, ele é tomado como um documento aqui delimitado pela string - ( here-docs aceitam apenas um traço opcional ), seguido de EOL como um argumento normal para cat . Em outras palavras, é o mesmo que

cat EOL < "$x" <<--

que é o mesmo que

cat EOL <<--

desde que você esteja redirecionando a entrada para cat duas vezes. Este último entra em vigor, embora cat não tente ler seu stdin aqui, já que ele é dado (o que ele acha que é) um nome de arquivo também.

Eu acho que o que você quer é

cat > "$x" <<-EOF
    blah
EOF
    
por 12.01.2018 / 14:04