写一个sh脚本判断,判断指定目录下,是否存在指定文件(ok文件)

写一个sh脚本判断,判断指定目录下,是否存在指定文件(ok文件),存在执行 sqlldr命令,不存在时命令不结束,直到检查到文件才执行sqlldr命令,这个怎么写
...全文
1660 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouchao6 2019-07-19
  • 打赏
  • 举报
回复
引用 8 楼 qq_45363110 的回复:
[quote=引用 7 楼 zhouchao6的回复:][quote=引用 6 楼 qq_45363110 的回复:]
[quote=引用 5 楼 zhouchao6的回复:][quote=引用 3 楼 qq_45363110 的回复:]
[quote=引用 2 楼 zhouchao6的回复:]可以用while/until循环,但是你是要一直检查吗?有ok文件,执行后就停止脚本?

对啊!场景是,我需要将别的系统的dat文件加载到我们的数据库里,若不判断有没有ok文件就加载会空跑,之后就全错了[/quote]


#!/bin/bash

while 1>0
do
if [ -f "$fileok" ]
then
sqlldr
exit
else
sleep 100
continue
fi
done


sleep 时间你自己定一个,最好不要太短,因为没有ok文件,会一直循环,时间太短,怕影响服务器
[/quote]
这个好似报错了报了语法 else处的错,这个100是秒么?[/quote]

嗯,这是100秒
我这边格式有点问题,你自己重新缩进下[/quote]
嗯缩进调了下就可以了,这个100秒后又回去判断么?直到他扫到了才结束么?[/quote]

是的,while循环就是只要条件为真,就一直循环。我直接定义1>0是永远为真,但是里卖弄做了if判断,如果存在ok文件,就执行sqlldr,然后exit退出脚本,否则,就continue,退出本次循环,直接进入下一次循环

continue:退出本次循环,直接进入下一次循环
break:退出整个循环,并不结束脚本exit:退出脚本
  • 打赏
  • 举报
回复
引用 7 楼 zhouchao6的回复:
[quote=引用 6 楼 qq_45363110 的回复:]
[quote=引用 5 楼 zhouchao6的回复:][quote=引用 3 楼 qq_45363110 的回复:]
[quote=引用 2 楼 zhouchao6的回复:]可以用while/until循环,但是你是要一直检查吗?有ok文件,执行后就停止脚本?

对啊!场景是,我需要将别的系统的dat文件加载到我们的数据库里,若不判断有没有ok文件就加载会空跑,之后就全错了[/quote]


#!/bin/bash

while 1>0
do
if [ -f "$fileok" ]
then
sqlldr
exit
else
sleep 100
continue
fi
done


sleep 时间你自己定一个,最好不要太短,因为没有ok文件,会一直循环,时间太短,怕影响服务器
[/quote]
这个好似报错了报了语法 else处的错,这个100是秒么?[/quote]

嗯,这是100秒
我这边格式有点问题,你自己重新缩进下[/quote] 嗯缩进调了下就可以了,这个100秒后又回去判断么?直到他扫到了才结束么?
zhouchao6 2019-07-19
  • 打赏
  • 举报
回复
引用 6 楼 qq_45363110 的回复:
[quote=引用 5 楼 zhouchao6的回复:][quote=引用 3 楼 qq_45363110 的回复:]
[quote=引用 2 楼 zhouchao6的回复:]可以用while/until循环,但是你是要一直检查吗?有ok文件,执行后就停止脚本?

对啊!场景是,我需要将别的系统的dat文件加载到我们的数据库里,若不判断有没有ok文件就加载会空跑,之后就全错了[/quote]


#!/bin/bash

while 1>0
do
if [ -f "$fileok" ]
then
sqlldr
exit
else
sleep 100
continue
fi
done


sleep 时间你自己定一个,最好不要太短,因为没有ok文件,会一直循环,时间太短,怕影响服务器
[/quote]
这个好似报错了报了语法 else处的错,这个100是秒么?[/quote]

嗯,这是100秒
我这边格式有点问题,你自己重新缩进下
  • 打赏
  • 举报
回复
引用 5 楼 zhouchao6的回复:
[quote=引用 3 楼 qq_45363110 的回复:]
[quote=引用 2 楼 zhouchao6的回复:]可以用while/until循环,但是你是要一直检查吗?有ok文件,执行后就停止脚本?

对啊!场景是,我需要将别的系统的dat文件加载到我们的数据库里,若不判断有没有ok文件就加载会空跑,之后就全错了[/quote]


#!/bin/bash

while 1>0
do
if [ -f "$fileok" ]
then
sqlldr
exit
else
sleep 100
continue
fi
done


sleep 时间你自己定一个,最好不要太短,因为没有ok文件,会一直循环,时间太短,怕影响服务器
[/quote] 这个好似报错了报了语法 else处的错,这个100是秒么?
zhouchao6 2019-07-19
  • 打赏
  • 举报
回复
引用 3 楼 qq_45363110 的回复:
[quote=引用 2 楼 zhouchao6的回复:]可以用while/until循环,但是你是要一直检查吗?有ok文件,执行后就停止脚本?

对啊!场景是,我需要将别的系统的dat文件加载到我们的数据库里,若不判断有没有ok文件就加载会空跑,之后就全错了[/quote]


#!/bin/bash

while 1>0
do
if [ -f "$fileok" ]
then
sqlldr
exit
else
sleep 100
continue
fi
done


sleep 时间你自己定一个,最好不要太短,因为没有ok文件,会一直循环,时间太短,怕影响服务器
  • 打赏
  • 举报
回复
我这样写 if [ -f "$fileok" ];then sqlldr...... fi 这样写的话,它不存在时这个程序也跑完了,后面的程序就继续跑了了
  • 打赏
  • 举报
回复
引用 2 楼 zhouchao6的回复:
可以用while/until循环,但是你是要一直检查吗?有ok文件,执行后就停止脚本?
对啊!场景是,我需要将别的系统的dat文件加载到我们的数据库里,若不判断有没有ok文件就加载会空跑,之后就全错了
zhouchao6 2019-07-19
  • 打赏
  • 举报
回复
可以用while/until循环,但是你是要一直检查吗?有ok文件,执行后就停止脚本?
zhgure 2019-07-19
  • 打赏
  • 举报
回复
for ((i=1; i<=100; i++))
do
echo $i
if [ -f okfile ]; then
sqlldr
exit 1
fi
done

18,829

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧