Explanation for what a while read statement is doing

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
0
down vote

favorite












I found some code for reading input from a file a while ago, I believe from Stack Exchange, that I was able to adapt for my needs:



while read -r line || [[ -n "$line" ]]; do
if [[ $line != "" ]]
then
((x++));
echo "$x: $line"
<then do something with $line>
fi
done < "$1"


I'm reviewing my script now & trying to understand what it's doing ... I don't understand what this statement is doing:



while read -r line || [[ -n "$line" ]];



I understand that the -r option says that we're reading raw text into line, but I'm confused about the || [[ -n "$line" ]] portion of the statement. Can someone please explain what that is doing?










share|improve this question







New contributor




K. Hilbert is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.























    up vote
    0
    down vote

    favorite












    I found some code for reading input from a file a while ago, I believe from Stack Exchange, that I was able to adapt for my needs:



    while read -r line || [[ -n "$line" ]]; do
    if [[ $line != "" ]]
    then
    ((x++));
    echo "$x: $line"
    <then do something with $line>
    fi
    done < "$1"


    I'm reviewing my script now & trying to understand what it's doing ... I don't understand what this statement is doing:



    while read -r line || [[ -n "$line" ]];



    I understand that the -r option says that we're reading raw text into line, but I'm confused about the || [[ -n "$line" ]] portion of the statement. Can someone please explain what that is doing?










    share|improve this question







    New contributor




    K. Hilbert is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.





















      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I found some code for reading input from a file a while ago, I believe from Stack Exchange, that I was able to adapt for my needs:



      while read -r line || [[ -n "$line" ]]; do
      if [[ $line != "" ]]
      then
      ((x++));
      echo "$x: $line"
      <then do something with $line>
      fi
      done < "$1"


      I'm reviewing my script now & trying to understand what it's doing ... I don't understand what this statement is doing:



      while read -r line || [[ -n "$line" ]];



      I understand that the -r option says that we're reading raw text into line, but I'm confused about the || [[ -n "$line" ]] portion of the statement. Can someone please explain what that is doing?










      share|improve this question







      New contributor




      K. Hilbert is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      I found some code for reading input from a file a while ago, I believe from Stack Exchange, that I was able to adapt for my needs:



      while read -r line || [[ -n "$line" ]]; do
      if [[ $line != "" ]]
      then
      ((x++));
      echo "$x: $line"
      <then do something with $line>
      fi
      done < "$1"


      I'm reviewing my script now & trying to understand what it's doing ... I don't understand what this statement is doing:



      while read -r line || [[ -n "$line" ]];



      I understand that the -r option says that we're reading raw text into line, but I'm confused about the || [[ -n "$line" ]] portion of the statement. Can someone please explain what that is doing?







      read






      share|improve this question







      New contributor




      K. Hilbert is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      K. Hilbert is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      K. Hilbert is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 19 mins ago









      K. Hilbert

      11




      11




      New contributor




      K. Hilbert is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      K. Hilbert is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      K. Hilbert is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.

























          active

          oldest

          votes











          Your Answer







          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "106"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: false,
          noModals: false,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );






          K. Hilbert is a new contributor. Be nice, and check out our Code of Conduct.









           

          draft saved


          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f478720%2fexplanation-for-what-a-while-read-statement-is-doing%23new-answer', 'question_page');

          );

          Post as a guest



































          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          K. Hilbert is a new contributor. Be nice, and check out our Code of Conduct.









           

          draft saved


          draft discarded


















          K. Hilbert is a new contributor. Be nice, and check out our Code of Conduct.












          K. Hilbert is a new contributor. Be nice, and check out our Code of Conduct.











          K. Hilbert is a new contributor. Be nice, and check out our Code of Conduct.













           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f478720%2fexplanation-for-what-a-while-read-statement-is-doing%23new-answer', 'question_page');

          );

          Post as a guest