2014-12-04 2 views
0

Я работал над сценарием, чтобы повторить дату при входе в систему в другом формате, но как только я приступлю к повторению результата, он дает мне перепутанный вывод. Я искал в Интернете, чтобы узнать, не ошибаюсь ли я в переменных или неправильно использую тики, но не повезло. Я даже повторил каждую отдельную переменную до и после эха проблемы, и они повторяют правильную дату/месяц/день недели. Как мой скрипт прямо сейчас, он только запускает «.Thu» при запуске. Кроме того, я выполнял его с помощью «sh./datescript.sh». Любая помощь/дополнительные ресурсы были бы оценены. Благодаря!Проблема эхо-переменных в сценарии bash

Мой сценарий:

#!/usr/bin/env bash 
date=`date`  #NOTE: date being used in two different ways 
day=`echo ${date} | cut -f1 -d' '` 
month=`echo ${date} | cut -f2 -d' '` 
date=`echo ${date} | cut -f3 -d' '` 
echo "Today is the ${date}th day of ${month}, which is a ${day}." 
echo $day 
echo $month 
echo $date 
+2

Ваш скрипт работает правильно в моих системах. –

+0

Хорошо ... Я попробую это через vi и посмотрю, работает ли это. Я писал его в Notepad ++ и копировал через ftp. – Xattle

+1

@ Xattle - вы можете запустить 'dos2unix' на нем, прежде чем пытаться запустить его –

ответ

2

Я могу повторить поведение, если добавить $'\r' в конце месяца и даты линий назначения. Похоже, что проблема с окончанием строки Win/* nix.

Запустить dos2unix или fromdos на скрипт, чтобы исправить его.

+0

Это была проблема Win/* nix. Как только я пробовал это через vi, он работал нормально. Переключение на кодировку UTF-8 также закончило работу. – Xattle

2
#!/usr/bin/env bash 

day=`date +%A` 
month=`date +%B` 
date=`date +%-d` 

echo "Today is the ${date}th day of ${month}, which is a ${day}." 
echo $day 
echo $month 
echo $date