我正在尝试编写一个 shell 脚本,该脚本会等待指定目录(例如 ~/fit/)中的文件数量达到预定义的数量。到目前为止我所得到的是:
limit = 10
while [ls ~/fit/ | wc -l -lt $limit]
do
sleep 1
done
这表示 -lt 对于 wc 来说是无效的选项。我也试过
[$limit -gt ls ~/fit/ | wc -l]
但它也不起作用。非常感谢任何帮助。
尝试:
limit=10
while [ `ls ~/fit/ | wc -l` -lt $limit ];
...
您需要:
limit=10
while [ `ls ~/fit/ | wc -l` -lt $limit ]
do
sleep 1
done
变化:
=
在limit=10
[
和 ]
ls ~/fit/ |
wc -l
)。最大限度地减少外部进程(如
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!"
试试这个
while(true)
do
var=`ls -l ~/fit/ | wc -l`
if [ $var -lt 10]
then
sleep 1
else
break
fi
done
您可以使用以下命令;
watch -n 1 'ls -l /your/path/|wc -l'