Parsing ls, not recommended

2019-09-20 11:13发布

问题:

I received a advice for do not parse ls, like describes in this website: Don't parse ls.
I was looking for DAILY files in my directory so that's what I did then:

for f in *.DA*; do   
    [[ -e $f ]] || continue 
    for file in $f; do  
        echo "The file that you are working on: "$file
        archiveContent=$( sed -n -e 1p $file )
        echo $archiveContent
    done
done  

Ok, that's works well, I've two files A.DAILY and B.DAILY, with the both archives I can get what is inside it, but when I changed a little bit the loop, it doesn't iterated with all files with .DAILY extension in my directory.

for f in *.DA*; do     
    [[ -e $f ]] || continue     
    for file in $f; do    
        echo "The file that you are working on: "$file    
        archiveContent=$( sed -n -e 1p $file )
        echo $archiveContent  
        COMPRESS $archiveContent;    
    done  
done  

when I called a function inside the loop, the loop just does for the first file, but not to the second.

回答1:

Since the outer loop sets f to each file in turn, your inner loop doesn't seem to serve any purpose.

for f in *.DA*; do
    [[ -e $f ]] || continue     
    echo "The file that you are working on: $f"    
    archiveContent=$( sed -n -e 1p "$f" )
    echo "$archiveContent"  
    COMPRESS "$archiveContent"
done