我正在尝试编写一个shell脚本,等待指定目录中的文件数(比如〜/ fit /)达到预定义的数字。到目前为止我得到的是:
limit = 10
while [ls ~/fit/ | wc -l -lt $limit]
do
sleep 1
done
这说 - -tt是wc的无效选项。我也试过
[$limit -gt ls ~/fit/ | wc -l]
但它也没有用。非常感谢任何帮助。
答案 0 :(得分:2)
尝试:
limit=10
while [ `ls ~/fit/ | wc -l` -lt $limit ];
...
答案 1 :(得分:2)
你需要:
limit=10
while [ `ls ~/fit/ | wc -l` -lt $limit ]
do
sleep 1
done
的变化:
=
周围不应有空格
在limit=10
[
和]
ls ~/fit/ |
wc -l
)。答案 2 :(得分:1)
试试这个
while(true)
do
var=`ls -l ~/fit/ | wc -l`
if [ $var -lt 10]
then
sleep 1
else
break
fi
done
答案 3 :(得分:1)
最小化外部流程使用的解决方案,例如ls
,wc
和true
,并正确管理包含换行符的文件名的(异常)情况:
#!/bin/sh
nmax=10
while :; do
n=0
for f in ~/fit/*; do
n=$((n+1))
done
[ $n -ge $nmax ] && break
sleep 1
done
echo "Limit reached!"