
現在のターミナルセッションの長さを出力し、その長さでさまざまな異なるタスクを実行するために独自のbashスクリプトを作成しようとしています。
私が経験している問題はスクリプトにあります。
#!/bin/bash
SESSIONLENGTH=$(echo $SECONDS)
echo $SESSIONLENGTH
...bashシェルの別のインスタンスを作成します(または少なくとも私はそれが起こっていると思います)。ここでは、スクリプトを実行するシェルの値の代わりに独自の$SECONDS
値が割り当てられます。$SESSIONLENGTH
$SECONDS
私の質問は、現在のセッションの長さをスクリプトとしてどのように返すことができるかということです。
答え1
あなたはできます
source /path/to/script
または
. /path/to/script
現在のセッションのスクリプトにあるコマンドを実行しますbash
。注:この場合、現在のセッションは完了するので、スクリプトから呼び出さないでくださいexit
(おそらくシェルが終了したときにターミナルエミュレータが閉じられることを確認する前に)。
一方、セッション時間だけを測定する場合は、次のようにすることもできます。
time bash
セッションを終了すると、そのセッションbash
で費やされた時間が印刷されます。複数のシェル間に移植可能です(bash
と同様にzsh
あります$SECONDS
)。