Portál AbcLinuxu, 6. května 2025 13:59
#!/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.
Řešení dotazu:
# 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).
'_EOF'
. Po odstranění uvozovek vše funguje. Ach jo, já bych si namlátil.
Ale díky za nakopnutí!
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.