[英]Why do my array doesn't contains all my values when i'm initializing it in a loop?
actually i want to get an array of dates, and in a if statement, i'm setting the i elements of my array to the dates i validated with my if condition. 实际上,我想获取日期数组,并在if语句中,将数组的i元素设置为使用if条件验证的日期。
ls muonic_data|(while read line; do
myYears[i]=$(echo $line | cut -f1 -d '-')
myMonths[i]=$(echo $line | cut -f2 -d '-')
myDays[i]=$(echo $line | cut -f1 -d '_' | cut -f3 -d '-')
myDate=${myYears[i]}-${myMonths[i]}-${myDays[i]
echo "Mes dates : " $myDate
if [[ $myDate =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]];
then
myTab[i]=$myDate
echo $myTab
fi
done
echo "Mon tableau : "${myTab[*]}
expect recupFileName.exp ${myTab[@]}
)
When i run echo at the end of the script, it display me only my lastest date, and not an array of dates. 当我在脚本末尾运行echo时,它仅显示我的最新日期,而不显示日期数组。 I'm really confused there.
我真的很困惑。
root@raspberrypi:~# ./recupFileName.sh
Mes dates : 2017-11-30
2017-11-30
Mes dates : 2017-11-30
2017-11-30
Mes dates : 2018-03-07
2018-03-07
Mes dates : 2018-04-13
2018-04-13
Mes dates : 2018-05-02
2018-05-02
Mes dates : 2018-3-7
Mes dates : 2018-4-13
Mes dates : 2018-5-2
Mon tableau : 2018-05-02
So how can i do to get my date array ? 那么我该如何获取我的日期数组?
Try this 尝试这个
ls muonic_data|(while read line; do
myYears[i]=$(echo $line | cut -f1 -d '-')
myMonths[i]=$(echo $line | cut -f2 -d '-')
myDays[i]=$(echo $line | cut -f1 -d '_' | cut -f3 -d '-')
myDate=${myYears[i]}-${myMonths[i]}-${myDays[i]
echo "Mes dates : " $myDate
var myTab = [];
if [[ $myDate =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]];
then
myTab[i]=
myTab.push("$myDate");
echo $myTab
fi
done
echo "Mon tableau : printf '%s ' "${myTab[@]}"
expect recupFileName.exp ${myTab[@]}
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.