I am trying to write a shell script that waits until the number of files in a specified directory ( say ~/fit/) has reached a predefined number. What I've got so far 开发者_JS百科is:
limit = 10
while [ls ~/fit/ | wc -l -lt $limit]
do
  sleep 1
done
This says -lt is an invalid option to wc. I also tried
[$limit -gt ls ~/fit/ | wc -l]
but it didn't work either. Any help is greatly appreciated.
Try:
limit=10
while [ `ls ~/fit/ | wc -l` -lt $limit ];
...
You need:
limit=10
while [ `ls ~/fit/ | wc -l` -lt $limit ]
do
  sleep 1
done
Changes:
- There should not be spaces around =inlimit=10
- There should be spaces surrounding
[and]
- You need to place the command that
gets you the file count (ls ~/fit/ | wc -l) in back ticks.
A solution that minimize the use of external processes, like ls, wc and true, and manage correctly the (unusual) case of filenames containing newlines:
#!/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!"
Try this
while(true)
do
var=`ls -l ~/fit/ | wc -l`
  if [ $var -lt 10]
  then
    sleep 1
  else
    break
  fi
done
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论