0

3 つの機能を持つ bash スクリプトがあります。それぞれに、dzen2 にパイプする出力があります。以下は、スクリプトの疑似コード バージョンです。

printVol()
{
LEVEL=getVolume
VOL='Volume: '$LEVEL
echo $VOL
}

printBattery()
{
LEVEL=getBat
BAT='Battery: '$LEVEL
echo $BAT
}

printDate()
{
DTE=getDTE
echo $DTE
}

#this is the line I need to figure out
printVol | dzen2 -x 900 && printBat | dzen2 -w 150 && printDate | dzen2

目標は、これらのそれぞれを dzen バーに出力することです。個別に、各 dzen 呼び出しが機能します。すべての値を同時に dzen バーに送信するにはどうすればよいですか?

編集: 各エコーを dzen バーに具体的に配置する必要があるため、3 つの異なる dzen 呼び出しがあります。-x と -w は位置決めフラグです。

4

2 に答える 2

1

コマンド グループを使用します。

{ printVol; printBat; printDate; } | dzen2 -x 900 -w 150

すべてのオプションを への 1 回の呼び出しに集約するのが理にかなっていると思いますdzen

于 2013-04-18T14:37:08.037 に答える
0

私はよく知りませんdzen-あなたの例から、標準入力からテキストを読み取ると思います。したがって、bashでは、プロセス置換を使用します

dzen2 -x 900 < <(printVol)  
dzen2 -w 150 < <(printBat) 
dzen2        < <(printDate)

代わりにテキストをパラメーターとして渡す必要がある場合は、単純なコマンド置換で実行できます。

dzen2 -x 900 "$(printVol)"  
dzen2 -w 150 "$(printBat)"  
dzen2        "$(printDate)"
于 2013-04-18T15:45:40.230 に答える