所以我有以下代码:
IFS=' ';
dateArr=(${date[i]});
monthStr=${dateArr[0]};
day=${dateArr[1]};
year=${dateArr[2]};
case "$monthStr" in
"Jan") month="01";;
"Feb") month="02";;
"Mar") month="03";;
"Apr") month="04";;
"May") month="05";;
"Jun") month="06";;
"Jul") month="07";;
"Aug") month="08";;
"Sep") month="09";;
"Oct") month="10";;
"Nov") month="11";;
"Dec") month="12";;
esac;
if [ ${#day} -eq 1 ]
then
day=0$day;
fi
dateTemp="$year-$month-$day";
echo $dateTemp;
当我运行它时,我得到以下输出:
-11-28
-10-27
-01-11
-01-07
-01-07
因此,您可以看到它正确附加了$ month和$ day变量,但$ year值未添加到$ dateTemp变量中。这也很奇怪,因为$ year变量不是空的,因为如果我回应它,它会给我正确的年份。示例代码的格式为“2016年1月1日”,但我尝试将其转换为YYYY-MM-DD。
如果有人能帮助我,我会很感激。
干杯!
答案 0 :(得分:1)
<
的值以回车结束(屏幕截图中显示year
)。大多数终端通过将光标移动到当前行的开头来“显示”回车符,以便跟随它的字符覆盖先前写入的字符。快速解决方法是使用
0d
更好的解决方法是从用于填充year=${year%.}
的输入数据中删除回车符。