#!/usr/local/bin/bash
out=`grep apache README`
echo $out;
通常、grepは、コマンドラインで実行すると、各一致を別々の行に表示します。ただし、上記のスクリプトでは、各一致を区切る改行は表示されません。改行を保存する方法を知っている人はいますか?
#!/usr/local/bin/bash
out=`grep apache README`
echo $out;
通常、grepは、コマンドラインで実行すると、各一致を別々の行に表示します。ただし、上記のスクリプトでは、各一致を区切る改行は表示されません。改行を保存する方法を知っている人はいますか?
回答:
あなたは割り当てではなくエコーでそれを失っています。次の場合、これをはっきりと見ることができます。
echo "${out}"
次のスクリプトでも同様の効果が見られます。
x="Hello,
I
am
a
string
with
newlines"
echo "====="
echo ${x}
echo "====="
echo "${x}"
echo "====="
出力:
=====
Hello, I am a string with newlines
=====
Hello,
I
am
a
string
with
newlines
=====
そして、あなたの質問とは無関係ですが、とにかく言及したいのですが、コマンドをネストできるという追加の利点のために、バックティックではなく$()構造を使用することを好みます。したがって、スクリプト行は次のようになります。
out=$(grep apache README)
今では違いはないかもしれませんが(そうではありません)、次のようなより複雑なコマンドが可能になります。
lines_with_nine=$(grep $(expr 7 + 2) inputfile)