スクリプトで「tput cols」を使用していますが、ウィンドウが最大化されている場合を除いてすべて問題ありません。私のスクリプトは任意のウィンドウ サイズを正しく取得できますが、ウィンドウを最大化すると、間違った値 (80) が取得されます。次に、ターミナルに直接「tput cols」と入力すると、正しいサイズ (158) が得られます。だから私の質問は、ウィンドウが最大化されている場合でも、どうすれば正しい値を取得できますか???
前もって感謝します
スクリプトで「tput cols」を使用していますが、ウィンドウが最大化されている場合を除いてすべて問題ありません。私のスクリプトは任意のウィンドウ サイズを正しく取得できますが、ウィンドウを最大化すると、間違った値 (80) が取得されます。次に、ターミナルに直接「tput cols」と入力すると、正しいサイズ (158) が得られます。だから私の質問は、ウィンドウが最大化されている場合でも、どうすれば正しい値を取得できますか???
前もって感謝します
tput cols
ioctl$COLUMNS
ではなく、シェル環境変数から読み取っている可能性があります。TIOCGWINSZ
シェルはおそらく に応答してこの変数を更新していますが、これはもちろんスクリプト内SIGWINCH
の変数には影響しません。$COLUMNS
ターミナル ioctl から値を取得するunset COLUMNS
かどうかを試してみてください。tput cols
まず、次を実行します。
$ shopt -s checkwinsize
ソース: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
as コマンドを使用resize
して情報を取得してみてください。必要な値が得られます。プログラムでそれらを使用するには、次のように記述します。
echo "Old value of COLUMNS: $COLUMNS"
# This should execute the output of resize and export the var you need
eval $(resize)
echo "New value of COLUMNS: $COLUMNS"
サイズ変更の詳細については、次のman resize
リンクを参照または確認してください: http://invisible-island.net/xterm/manpage/resize.html