2017-07-11 102 views
0

任何人都可以幫我下面。我不明白什麼是錯的,沒有得到任何輸出。我的要求是讀取文件並檢查它是否爲空,並逐行打印內容。而循環不工作在外殼

#!/bin/ksh 
    echo " enter file name " 
    read $file 
    if [ -f "$file" ] && [ -s "$file" ] 
    then 
    echo " file does not exist, or is empty " 
     else 
    while IFS='' read -r line || [[ -n "$file" ]];do 
     echo "$line" 
    done 
    fi 

回答

1

read $file應該read file

您的比較邏輯是倒退。 比較if [ -f "$file" ] && [ -s "$file" ]是'如果文件是普通文件而不是空的則進入錯誤情況'。你想要'如果文件不規則或文件是空的,進入錯誤案例'if [ -f "$file" ] -eq 0 || [ -s "$file" ] -eq 0

Per ksh file read應該

while IFS='' read -r line 
    do 
     echo "$line" 
    done < "$file" 

Further Reading On ksh redirection

+0

感謝約翰..它的工作。 – Sunny1985