Bashスクリプト内のシェル変数$ COLUMNSを参照

Bashスクリプト内のシェル変数$ COLUMNSを参照

これはxterm:では期待どおりに実行されますが、xterm:などのスクリプトでは実行されsha512sum <filename> | cut -c -$COLUMNSません。言えば分からないからです。#! /bin/bashdothis.sh <args>$COLUMNS

$COLUMNSをパラメータとして渡したり、環境にエクスポートしたりしないことをお勧めします。

スクリプトは重要ではありません。 1つのシステムのxtermコマンドラインから実行できます。

Linux pre 3.2.0-4-amd64 #1 SMP Debian 3.2.81-2 x86_64 GNU/Linux
GNU bash, version 4.2.37
XTerm(278)

ベストアンサー1

bashはシェル変数を設定COLUMNSし、LINESインタラクティブモデル(問題があるサイズ確認これらの区別につながる特性)。この情報は様々な方法で得ることができる。

質問の文脈でシェルスクリプトを作成する方法を知っていますが、役に立つデータをどこで取得できるかわかりません。

私のウィンドウには40行と80列があります。

  • tput colsまず、環境変数を試してから(ユーザー環境に設定されていないので大丈夫です)、システムの端末設定、端末の説明を試してください。端末記述にディメンションを置くのは、bashなどのtermcapアプリケーションで使用される支柱です。たとえば、次のような数字のみを受け取ります。

    40

    歴史的失敗のため、FreeBSDシステムで(参照歴史そして移植性コメント)を使用する必要があります。tput co、なぜなら(terminfoでncursesをシステムライブラリとして使用しても)ncursestputFreeBSDで使用しないでください。もちろん、NetBSDとOpenBSDは別の方向に向いていました。

  • stty size(多くのプラットフォームで利用可能)端末設定で行/列の値を提供します。この値が使用できない場合は何も提供されません。シェルから簡単に分割できる2つの数字のみを提供します。

    40 80

  • resize端末自体を試して(エスケープシーケンスを使用)、端末設定を更新して一致させます。 Bashの場合は、次のものを使用できます。resize -u、次の出力を提供します。

    列= 80;
    行= 40;
    列ラインのエクスポート;

cron端末が関連していないため、これらのオプションのどれもあまり使用されません。ただし、端末ではすべて使用できます。

おすすめ記事