我有两个长度不同的数组,我需要在同一个循环中使用它们。
这是代码
#!/bin/bash
data=`date +%Y-%m-%d`
data1=`date -d "1 day" +%Y-%m-%d`
cd /home/test/em_real/
#first array (today and tomorrow)
days="$data $data1"
#second array (00 till 23)
hours="00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23"
for value in $hours
do
cp /home/test/em_real/mps_"${days[i++]}"_"$value":00:00 /home/DOMAINS/test_case/
sleep 10
done
Tt失败,没有时间。
我该怎么做?
@fedorqui如果现在,在bucle里面,我想删除破折号( - )并再做一个订单,我不知道为什么它没有得到字符串,代码是以下:
days=("$data" "$data1") #create an array properly
for value in {00..23}; do
for day in "${days[@]}"; do
cp "/path/mps_${day}_${value}:00:00" /another/path/test_case/
d=d01
hourSIMULATION=01
clean= echo ${day} | sed -e 's/-//g'
sed -e 's/<domine>/'$d'/g' -e 's/<data-initial>/'$clean$value'/g' -e 's/<hour-SIMULATION>/'$hourSIMULATION'/g' run_prhours > run_pr
done
done
当我在$dayclean
内查看时,字符串run_pr
为空,你知道原因是什么吗?
答案 0 :(得分:3)
您正在使用days[i++]
,但未在任何地方定义i
。不确定您要对${days[i++]}
做什么,但$days
只是一个包含"$data $data1"
的字符串。
您可能想说days=($data $data1)
来创建数组。
此外,您可以说for hour in {00.23}
而不是明确数字。
然后,你想要循环过去几个小时,然后再过几天。为此,请使用嵌套循环:
days=("$data" "$data1") #create an array properly
for value in {00..23}; do
for day in "${days[@]}"; do
cp "/path/mps_${day}_${value}:00:00" /another/path/test_case/
done
done