Portál AbcLinuxu, 5. června 2024 15:40


Dotaz: BASH a výsledek proměnné (příkazu) jako parametr

Petr Maleček avatar 15.2. 23:38 Petr Maleček | skóre: 28 | Plzeň - Bolevec
BASH a výsledek proměnné (příkazu) jako parametr
Přečteno: 309×
Odpovědět | Admin
Ahoj,

vím, že budu za troubu a pravděpodobně už se někdo na něco podobného/stejného ptal, ale asi blbě hledám, už jsem docela vyčerpaný :-D

#!/bin/bash
... nějaký kód

# nastaveni LAN
eth_dev=`ls /sys/class/net/ | grep enp0`
`cat > /etc/netplan/01-config.yaml <<'_EOF'
---
network:
  ethernets:
    $eth_dev:
      optional: true
      dhcp4: false
        addresses:
          - 192.168.0.10/24
  version: 2
_EOF`

# nastaveni WiFI
wifi_dev=`ls /sys/class/net/ | grep w`
`cat >> /etc/netplan/01-config.yaml <<'_EOF'

  wifis:
    $wifi_dev:
      optional: true
      access-points:
        "nejaka-wifi":
          password: "heslo-k-nejake-wifi"
      dhcp4: true
_EOF`

Když si proměnnou eth_dev či wifi_dev vypíšu přes echo, zobrazí se správně výsledek (celý název eth rozhraní). Ale když spustím tento kód, tak se vygeneruje yaml config, ve kterém název rozhraní není nahrazený výsledkem proměnné.

Co dělám špatně?

Díky.
LinMuck, WinFuck :-P

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.2. 00:03 Want
Rozbalit Rozbalit vše Re: BASH a výsledek proměnné (příkazu) jako parametr
Odpovědět | | Sbalit | Link | Blokovat | Admin
No jestli dobře vidím, voláš ten cat jako podproces. Nepoužívej apostrofy, protože v tom máš evidentně hokej, ale dolar, levá kulatá závorka - to co chceš spustit - pravá kulatá závorka. Budeš to mít přehlednější a ten cat se jako podproces nevolá.
Petr Maleček avatar 16.2. 00:09 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH a výsledek proměnné (příkazu) jako parametr
Díky za tip, ale i variantu bez uvozovek s použitím dolaru jsem zkoušel, zkoušel jsem i nevolat cat jako podproces, vůbec žádný rozdíl :-(

# nastaveni LAN
eth_dev=$(ls /sys/class/net/ | grep enp0)
cat > /etc/netplan/01-config.yaml <<'_EOF'
---
network:
  ethernets:
    $eth_dev:
      optional: true
      dhcp4: false
        addresses:
          - 192.168.0.10/24
  version: 2
_EOF

Výsledkem je soubor s totožným obsahem, jako je "šablona". Proměnná $eth_dev se nenahradila. Ani když jsem zkoušel $(eth_dev).
LinMuck, WinFuck :-P
Řešení 1× (Petr Maleček (tazatel))
Petr Maleček avatar 16.2. 00:13 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH a výsledek proměnné (příkazu) jako parametr
Aha, tak už jsem se chytil, to je to moje kopírování částí kódu a nepřemýšlení. Problém byl v uvozovkách '_EOF'. Po odstranění uvozovek vše funguje. Ach jo, já bych si namlátil. Ale díky za nakopnutí! :-)
LinMuck, WinFuck :-P

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.