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 脚本输出在一行中包含所有内容。

夹具.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"

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

于 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 回答