3

スクリプトで「tput cols」を使用していますが、ウィンドウが最大化されている場合を除いてすべて問題ありません。私のスクリプトは任意のウィンドウ サイズを正しく取得できますが、ウィンドウを最大化すると、間違った値 (80) が取得されます。次に、ターミナルに直接「tput cols」と入力すると、正しいサイズ (158) が得られます。だから私の質問は、ウィンドウが最大化されている場合でも、どうすれば正しい値を取得できますか???

前もって感謝します

4

3 に答える 3

4

tput colsioctl$COLUMNSではなく、シェル環境変数から読み取っている可能性があります。TIOCGWINSZシェルはおそらく に応答してこの変数を更新していますが、これはもちろんスクリプト内SIGWINCHの変数には影響しません。$COLUMNS

ターミナル ioctl から値を取得するunset COLUMNSかどうかを試してみてください。tput cols

于 2013-01-13T21:54:45.717 に答える
2

まず、次を実行します。

$ 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

于 2013-03-20T13:03:26.057 に答える