我试图使用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脚本输出类似于终端输出?
答案 0 :(得分:2)
使用双引号:
echo "$fixture"
当变量fixture已嵌入换行符并且不加引号时,bash会将其拆分为不同的参数以进行回显。为简化起见,假设fixture是字符串“a \ nb”。如果没有引号,bash会将两个参数传递给echo:a
和b
。使用引号,bash只传递一个参数,不会丢弃换行符。
答案 1 :(得分: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