すべての負荷平均を収集して配列に入れようとします。正確な方法は何でなければならず、次の要件を念頭に置いてください。
配列を定義します。
LA= ("one" "five" "fifteen")
LA= (`(uptime | grep -o '[0-9]\+\.[0-9]\+*')`)
ただし、uptime | grep -o '[0-9]\+\.[0-9]\+*'
コマンドは次の出力を提供します。
3.08
3.49
3.61
要件:1.平均はスペースで区切られ、配列の構文に合うように改行文字があってはなりません。
小数点より前の値のみが出力変数または配列変数として送信されます。
答え1
配列を埋めるときの改行は問題になりません。bash
この文脈では、別の単語区切り記号だけです。
コマンドには2つのエラーがありますLA= ((uptime | grep -o '[0-9]\+\.[0-9]\+*'))
。
後ろにスペースがあります
=
。これは有効な構文ですが、期待した効果はありません。行の残りの部分に値を割り当てる代わりに、
$LA
値を$LA
空の文字列に設定してから、行の残りの部分を実行します。これは便利な機能です一時的にエクスポートされた値のオーバーライド環境特定のコマンドを実行する前の変数です。コマンドが終了すると、変数の元の値が復元されます。例えば
$ VISUAL=/usr/bin/joe sensible-editor myfile.txt .... (exit joe) $ echo $VISUAL /usr/bin/vi
$
2番目の前にaがありません(
。いいえ$
、あなたの注文はそうではありませんコマンドの置き換え、これは偽のオペランドと演算子を使用したシェル算術です。
この試み:
$ LA=($(uptime | grep -Eo '[0-9]+\.[0-9]+'))
$ typeset -p LA
declare -a LA=([0]="0.97" [1]="1.23" [2]="1.39")