简单的shell脚本书写-------在一个脚本中将参数传递到它使用到的下一级脚本

怎么将shell脚本传进的参数传递到它调用的脚本中

在工作的时候遇到的一个需求而联想的到一个想法。

做需求的时候没有想到怎么做,最后在自己的看大佬写的脚本的时候,得到的解决方法。

贴上大佬的代码

#!/bin/bash
#$1开始时间 如:2019-08-12 00:00:00
#$2结束时间 如:2019-08-13 00:00:00
#$3时间粒度单位分钟
source /etc/profile
start(){
 startsec=$(date -d "${1}" +%s)
 endsec=$(date -d "${2}" +%s)
 let "timesize=$3*60"
  while(( $startsec<$endsec ))
   do
    day=$(date -d @${startsec} "+%Y%m%d")
    let "etime=${startsec}+$timesize"
    sminute=$(date -d @${startsec} "+%H%M")
    eminute=$(date -d @${etime} "+%H%M")
    where=""
    if [ ${eminute} == '0000' ]; then 
         where=" day=${day} and minute>='${sminute}' "
      else
         where=" day=${day} and minute>='${sminute}' and minute<'${eminute}' " 
    fi
    echo ${where}
    echo "统计分区粒度:day=${day} and sminute=${sminute} and eminute=${eminute}"
#这里用拼下面一个脚本的执行命令 ${4}是执行的脚本名。其他的是具体的参数 execsql "${4}" "${day}" "${sminute}" "${eminute}" "${where}" let "startsec+=timesize" done }
#这里是大佬的想下面的一个脚本传参的方法了
#${1}作为执行的脚本 其他是上面传下来的参数 execsql(){ $1 "${2}" "${3}" "${4}" "${5}" } if [ ! -n "$2" ] || [ ! -n "$1" ] || [ ! -n "$3" ] || [ ! -n "$4" ] then echo "参数为:开始时间 结束时间 粒度 执行sql的sql不为空!" exit 0 else echo "开始执行调度" start "$1" "$2" "$3" "$4" echo "完成执行调度" exit 0 fi

  上面的脚本用处是用来自动执行对应sql的 只需要传入开始时间、结束时间、和时间间隔就可以实现定时检索表

总结下来很简单 其实就是拼一个语句出来而已,只不过语句是这个根脚本接受的参数而已

猜你喜欢

转载自www.cnblogs.com/luckyfruit/p/11593485.html