怎么将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的 只需要传入开始时间、结束时间、和时间间隔就可以实现定时检索表
总结下来很简单 其实就是拼一个语句出来而已,只不过语句是这个根脚本接受的参数而已