格式化bash脚本的输出

时间:2012-06-08 21:11:42

标签: linux bash scripting

我试图使用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脚本输出包含所有内容。

fixture.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脚本输出类似于终端输出?

2 个答案:

答案 0 :(得分:2)

使用双引号:

echo "$fixture"

当变量fixture已嵌入换行符并且不加引号时,bash会将其拆分为不同的参数以进行回显。为简化起见,假设fixture是字符串“a \ nb”。如果没有引号,bash会将两个参数传递给echo:ab。使用引号,bash只传递一个参数,不会丢弃换行符。

答案 1 :(得分:1)

您不需要echocat

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