Linux-shell 按日期循环脚本数组遍历笔记

Shell 数组遍历

Shell 数组定义:数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。与大部分编程语言类似,数组元素的下标由 0 开始。
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下

array_name=(value1 value2 ... valuen)

遍历(For循环法):

 for var in ${arr[@]};
 do
   echo $var
done

例子:

#遍历数组
dates=(2021-01-31 2021-02-28 2021-03-31 2021-04-30 2021-05-31 2021-06-30 2021-07-31 2021-08-31 2021-09-30 2021-10-31 2021-11-30 2021-12-31 2022-01-31 2022-02-28 2022-03-31 2022-04-30 2022-05-31 2022-06-30 2022-07-31)

for dt in ${dates[@]}
do
    #执行你需要的操作
	echo -e "${dt}\n"
done

Linux-shell 按日期循环脚本数组遍历笔记_第1张图片

问题:./test.sh: 3: ./test.sh: Syntax error: “(” unexpected

原因:兼容性问题,因为Linux 将sh默认执行了dash ,而不是bash
使用 bash xxxx.sh

Other:
sudo dpkg-reconfigure dash
在弹出的窗口选择no
然后再重新执行 sudo sh test.sh就可以了

日期循环

开始日期和结束日期可手动传进去

#!/bin/bash
start_date=$1
end_date=$2

i=$start_date
while [[ $i < `date -d "+1 day $end_date" +%Y-%m-%d` ]]
 do
 echo $i "---开始"
 bash /  # 循环操作
 echo $i "---结束"
 i=`date -d "+1 day $i" +%Y-%m-%d`
 done

遍历文件内容操作

#!/bin/bash
#文件内存存放
dates=$(cat $(pwd)/dates.txt)
#循环
for i in $dates
do
#操作
  echo $i
done

你可能感兴趣的:(Linux,shell)