bash コマンド変数の生成

bash コマンド変数の生成

このコマンドを生成して変数に入れたいです。

sort -k 1,1 | tr " " "\n" | users | wc -l

ただし、以下のように、これまでの出力ではエラーが発生し、正しく動作しません。

us_num=$(users | tr " " "\n" | sort -k 1,1 | wc -l)
echo "Currently there is $(us_num) number of users on the server."

どんなアイデアがありますか?

ベストアンサー1

$(us_num)コマンドを実行しus_numてコマンドの出力に置き換えられるコマンドの置き換え。

挿入する値変える us_num$us_num代わりに以下を使用してください。

printf 'There are currently %d number of users on the server\n' "$us_num"

また、前述の最初のパイプラインにはコマンドの位置が正しくありません。このusersコマンドは端末の入力を無視し、tr端末sortからの入力を待ちます。

wc -w説明で述べたように、以下を使用してパイプラインを短縮することもできます(単語数の計算)。

printf 'There are currently %d number of users on the server\n' "$(users|wc -w)"

おすすめ記事