2

bash スクリプトを使用して特定の詳細を表示しようとしていますが、bash スクリプトの出力が端末の出力と異なります。

端末出力:

ubuntu@ubuntu:~/ubin$ cat schedule.text  | grep 09/06/12
Sat 09/06/12 Russia           00:15 Czech Republic   A
Sat 09/06/12 Netherlands      21:30 Denmark          B
ubuntu@ubuntu:~/ubin$ 

Bash スクリプト出力:

ubuntu@ubuntu:~/ubin$ bash fixture.sh 
Sat 09/06/12 Russia 00:15 Czech Republic A Sat 09/06/12 Netherlands 21:30 Denmark B
ubuntu@ubuntu:~/ubin$ 

ご覧のとおり、bash スクリプトの出力はターミナルの出力とは異なります。私のbashスクリプトの出力には、すべてが1行に含まれています。

フィクスチャ.sh:

A=$(date +%d/%m/%y) #get today's date in dd/mm/yy fmt
fixture=$(cat /home/ubuntu/ubin/schedule.text | grep $A)
echo $fixture

それで、私の質問は、bashスクリプトの出力を端末の出力に似たものにするにはどうすればよいですか?

4

2 に答える 2

2

二重引用符を使用します。

echo "$fixture"

変数フィクスチャに改行が埋め込まれていて引用符が付いていない場合、bashはそれを異なる引数に分割してエコーします。簡単にするために、フィクスチャが文字列「a\nb」であると仮定します。引用符なしで、bashはechoに2つの引数を渡します:ab。引用符を使用すると、bashは1つの引数のみを渡し、改行を破棄しません。

于 2012-06-08T21:14:45.003 に答える
1

echoまたはは必要ありませんcat:

A=$(date +%d/%m/%y) #get today's date in dd/mm/yy fmt
grep $A /home/ubuntu/ubin/schedule.text

または、ワンライナーを好む場合:

grep $(date +%d/%m/%y) /home/ubuntu/ubin/schedule.text
于 2012-06-08T21:23:40.420 に答える