shell脚本上的TXT文件验证

时间:2012-03-25 19:15:45

标签: bash shell

我正在开发一个shell脚本,只有在txt文件存在的情况下对txt文件执行某些处理,但是这个测试循环不起作用,我想知道为什么?谢谢!

while [ -e '*.txt' ] do $process done

2 个答案:

答案 0 :(得分:3)

您的while循环(一旦修复)将持续运行$process,直到所有名为*.txt的文件都被删除。我不知道那将是多么有用。

我猜 - 猜测,请注意 - 您打算做这样的事情:

for f in *.txt; do $process; done

这将为每个$process文件调用.txt一次,将$f设置为文件名。例如,

for f in *.txt; do cat $f; done

将输出当前目录中每个.txt文件的内容。

答案 1 :(得分:0)

如果全部在一行,您的命令需要分号,如下所示:

while [ -e '*.txt' ] ; do $process ; done

但是,我不认为[-e'* .txt']可以做你想要的。它查找一个名为'* .txt'的文件。

这不是一个简洁的解决方案,但这似乎有效:

while stat --format='' *.txt >/dev/null 2>/dev/null  ; do $process ; done

有人可能会使用 find 或其他命令而不是 stat,,但想法是选择一个返回true的命令,当且仅当至少有一个参数是提供。最好是根据 argc编写自己的返回0或1的命令。

但是,也请看@Thomas的回复。有人怀疑他的猜测可能是正确的。

更新:这是一个更好的答案:

at_least_one() { (($# > 0)) ; }
while at_least_one *.txt ; do $process ; done