コマンド出力を変数として送信するときにフォーマットを維持しますか? [コピー]

コマンド出力を変数として送信するときにフォーマットを維持しますか? [コピー]

bashスクリプトがあります。このコマンドを実行すると:

  1. 特定のパターンのgrep、
  2. 変換出力、
  3. 出力ソート
  4. 出力重複排除

その後、端末で1行あたりのgrep検索を取得します。

LC_ALL=C grep -o --color -h -E -C 0 -r "$pattern" /pathto/Pre_N/ | tr -d '[:digit:]' | sort | uniq

ただし、出力変数に入れるとフォーマットが失われます(ファイルにエコーされるか画面にエコーされる場合)。

#!/usr/bin/env bash
output=$(LC_ALL=C grep -o --color -h -E -C 0 -r "$pattern" /pathto/Pre_N/ | tr -d '[:digit:]' | sort | uniq)
echo $output > $fn

コマンド出力を変数に保存した後、コマンド出力形式をどのように保存できますか?

ベストアンサー1

引用符を使用する:

echo "$output" > $fn

エコー行は(変数拡張後)シェルによって解析され、引数間のすべての空白文字は単純な空白に縮小されます。たとえば、

$ var1="toto
> titi
> tutu
> "

$ echo $var1
toto titi tutu

$ echo "$var1"
toto
titi
tutu

おすすめ記事