arrays - 当我在循环中初始化它时,为什么我的数组不包含我的所有值?
问题描述
实际上我想得到一个日期数组,在 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
那么我该怎么做才能得到我的日期数组呢?
解决方案
尝试这个
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[@]}
)
推荐阅读
- vue.js - Sinon spies 怎么注册一个 Vue 组件方法,当它被调用为事件的回调?
- fortran - 在 Fortran 代码中将输出写入文本文件
- webgl - 如何在 WebGL 纹理中使用打包像素数组?
- python - 使用逻辑回归、弓、计数向量器建立文本分类的机器学习模型。获取新输入点的值错误
- json - Flutter - 使用 json_serializable 反序列化 firebase_messagin 通知
- ruby - 如何检查是否提供了正确的日期格式
- sas - 有没有办法在 SAS 中进行条件转置?
- reactjs - React:强制完全更新组件
- bash - 检查当前日期的文件是否存在
- c++ - C ++:用于排序元素的结构与函数