web-dev-qa-db-ja.com

出力を変数にリダイレクトしますか?

2つのコマンドからの出力を変数に向けることに興味があります。出力を画面に表示したくないのですが、代わりにスクリプト内の変数に割り当てて、再び使用できるようにします。

私がやっていることは、以下に示すコマンドを使用してディレクトリからファイルサイズを取得することです:

ls -l /var/spool | wc -c

このコマンドは、ファイルサイズをバイト単位で取得し、出力を整数として表示します。この整数を好みの変数に割り当てて、後で別の変数と比較できるようにすることに興味があります

これはうまくいかないようです:

size = ls -l /var/spool | wc -c

リダイレクトは機能しますか?

このような....

ls -l /var/spool | wc -c > size

いずれにしても、この数値出力を変数に割り当てて、画面に表示しないようにします。

どんな提案も大歓迎です!

8
Justin

とても簡単そうです。

romano@RRyS:~$ size=$(ls -l /var/spool | wc -c)
romano@RRyS:~$ echo $size
476

シェル構文$(command)commandを実行し、標準出力を返します。変数に保存するだけです。

あなたのコマンド:

ls -l /var/spool | wc -c > size 

現在のディレクトリにsizeという名前のファイルを作成します(番号と改行を含む)。

11
Rmano

Rmano's answer で提供されるソリューションを好みますが、リダイレクトのみを使用する場合:

read size < <(ls -l /var/spool | wc -c)
6
Radu Rădeanu