2012-06-08 60 views
2

我想使用bash脚本显示某些细节,但bash脚本的输出与终端的输出不同。bash脚本的格式输出

端子输出:

[email protected]:~/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 
[email protected]:~/ubin$ 

bash脚本输出:

[email protected]:~/ubin$ bash fixture.sh 
Sat 09/06/12 Russia 00:15 Czech Republic A Sat 09/06/12 Netherlands 21:30 Denmark B 
[email protected]:~/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

用双引号:

echo "$fixture" 

当变量夹具已经嵌入了新行和是未加引号,bash的拆分成不同的参数来呼应。为了简化,假设夹具是字符串“a \ nb”。没有引号,bash传递两个参数来回显:ab。用引号,bash只传递一个参数,不会丢弃换行符。

+0

OK'双quotes'的伎俩。你可以提供一些细节,或者指出正确的“双引号”技巧文档。 – ronnie

+0

感谢您的解释。将在6分钟内接受答案。 – ronnie

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 
+0

哦,我不知道。谢谢 – ronnie