Portál AbcLinuxu, 7. listopadu 2025 02:48
fce1(){
echo $(tput cols)
}
fce1 2>> $(dirname $0)/error.log
Výsledek je 80
fce2(){
echo $(tput cols)
}
fce2
Vý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.log
Pomí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.