END {
file = "a.txt"
system(cat file)
}
Chtěl bych něco takového udělat? (otevřete soubor, jehož jméno je v proměnné awk).
Jak se to dělá?
Přijatá odpověď:
Problém je v tom, že system() předává příkazový řádek shellu, takže v obecném případě musíte v názvu souboru ukončit všechny speciální znaky shellu.
awk má asociativní pole ENVIRON, které je namapováno na přijaté prostředí, ale přiřazení k němu bohužel neovlivňuje prostředí příkazů prováděných prostřednictvím system
nebo getline
awk -v q="'" '
function escape(str) {
gsub(q, q "\" q q, str)
return q str q
}
BEGIN {
file = "a.txt"
system("cat " escape(file))
}'
Samozřejmě, pokud je soubor „a.txt“ nebo se můžete ujistit, že jeho cesta nebude nikdy obsahovat žádné speciální znaky shellu, můžete se zbavit:
system("cat " file)
Pokud se můžete ujistit, že neobsahuje jednoduché uvozovky, můžete:
system("cat '''" file "'''")
Ssh:„chyba při čtení délky odezvy z autentizační zásuvky“?
Jak nastavit správné monitorování služeb automatizovaným způsobem? Takže, když se jeden pád automaticky restartuje?