Почему мой массив не содержит все мои значения, когда я инициализирую его в цикле? - PullRequest
0 голосов
/ 17 мая 2018

на самом деле я хочу получить массив дат, и в операторе 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[@]}
)   

Когда язапустите echo в конце скрипта, он покажет мне только мою последнюю дату, а не массив дат.Я действительно запутался там.

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

Так, как я могу сделать, чтобы получить мой массив дат?

1 Ответ

0 голосов
/ 17 мая 2018

Попробуйте это

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[@]}
)   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...