while循环不在shell中工作

时间:2017-07-11 04:54:30

标签: shell sh

任何人都可以帮助我以下。我不明白什么是错的,没有得到任何输出。我的要求是读取一个文件并检查它是否为空并逐行打印内容。

   #!/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 个答案:

答案 0 :(得分: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