Portál AbcLinuxu, 9. května 2025 06:04
fce1(){ echo $(tput cols) } fce1 2>> $(dirname $0)/error.logVýsledek je 80
fce2(){ echo $(tput cols) } fce2Výsledek je 210 Díky
tput cols
vypisuje počet sloupců terminálu, který má na descriptoru 2 (stderr). Pokud to není terminál, vypíše zjevně defaultní osmdesátku. Toť vše. Kam si nasměruješ stderr, to dostaneš.
jak to tedy můžu zjistit – záleží na tom, co je ono "to", resp. o co se vůbec snažíš. (Proč přesměrováváš stderr, proč voláš funkci, proč tam máš echo atd. Nic z toho není z tvé otázky vůbec jasné.)
# !/bin/bash fce_foo() { START_WIDTH=$(tput cols) while true do .. jiny kod .. ACTIVE_WIDTH=$(tput cols) if [ "$ACTIVE_WIDTH" != "$START_WIDTH" ] then echo "ŠÍŘKA NENÍ STEJNÁ..." else echo "ŠÍŘKA JE STEJNÁ..." fi .. jiny kod .. sleep 5 done }fce_foo 2>>/tmp/error.log
#!/bin/bash setcolumns() { columns=$(tput cols); } trap setcolumns SIGWINCH fce_foo() { START_WIDTH=$columns while true do echo $COLUMNS $columns $START_WIDTH if [ "$columns" != "$START_WIDTH" ] then echo "ŠÍŘKA NENÍ STEJNÁ..." else echo "ŠÍŘKA JE STEJNÁ..." fi sleep 1 done } columns=$(tput cols) fce_foo 2>>/tmp/error.logPomíjím teď logiku skriptu, která nejspíš bude chtít šířku, se kterou se porovnává, po změně aktualizovat...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.