2012-06-08 6 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 Script Выход:

[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 есть все в одной строке.

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 

Итак, мой вопрос, как я могу сделать мой Баш выход сценарий похож на выходной разъем?

ответ

2

Используйте двойные кавычки:

echo "$fixture" 

Когда переменная приспособление имеет встроенные строки и в кавычках, Баш разбивает его на различные аргументы эха. Для упрощения предположим, что fixture является строкой «a \ nb». Без кавычек bash передает два аргумента для эха: a и b. С кавычками bash передает только один аргумент и не отбрасывает новую строку.

+0

ОК 'двойной 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

Смежные вопросы