Split string by space in ZSH












1















Give this file.txt:



first line
second line
third line


This works in bash:



while IFS=' ' read -a args; do
echo "${args[0]}"
done < file.txt


To produce



first
second
third


That is to say, we were able to read the file line by line, and on each one we split the line further into an array using space as a delimiter. But in zsh, the result is an error: read: bad option: -a.



How can we achieve in zsh the same as in bash? I’ve tried several solutions, but I was never able to split a string into an array using spaces as the delimiter.










share|improve this question



























    1















    Give this file.txt:



    first line
    second line
    third line


    This works in bash:



    while IFS=' ' read -a args; do
    echo "${args[0]}"
    done < file.txt


    To produce



    first
    second
    third


    That is to say, we were able to read the file line by line, and on each one we split the line further into an array using space as a delimiter. But in zsh, the result is an error: read: bad option: -a.



    How can we achieve in zsh the same as in bash? I’ve tried several solutions, but I was never able to split a string into an array using spaces as the delimiter.










    share|improve this question

























      1












      1








      1








      Give this file.txt:



      first line
      second line
      third line


      This works in bash:



      while IFS=' ' read -a args; do
      echo "${args[0]}"
      done < file.txt


      To produce



      first
      second
      third


      That is to say, we were able to read the file line by line, and on each one we split the line further into an array using space as a delimiter. But in zsh, the result is an error: read: bad option: -a.



      How can we achieve in zsh the same as in bash? I’ve tried several solutions, but I was never able to split a string into an array using spaces as the delimiter.










      share|improve this question














      Give this file.txt:



      first line
      second line
      third line


      This works in bash:



      while IFS=' ' read -a args; do
      echo "${args[0]}"
      done < file.txt


      To produce



      first
      second
      third


      That is to say, we were able to read the file line by line, and on each one we split the line further into an array using space as a delimiter. But in zsh, the result is an error: read: bad option: -a.



      How can we achieve in zsh the same as in bash? I’ve tried several solutions, but I was never able to split a string into an array using spaces as the delimiter.







      bash zsh array read






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 11 mins ago









      user137369user137369

      17517




      17517






















          1 Answer
          1






          active

          oldest

          votes


















          0














          It's probably because -a is not a POSIX compliant flag support for the read command. It is more likely that zsh does implement the version of read that does not support -a. But you can still get around using variables as placeholders to store the line contents as



          while IFS=' ' read -r fist second; do
          echo "$first"
          done < file.txt




          share























            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',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f500537%2fsplit-string-by-space-in-zsh%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            It's probably because -a is not a POSIX compliant flag support for the read command. It is more likely that zsh does implement the version of read that does not support -a. But you can still get around using variables as placeholders to store the line contents as



            while IFS=' ' read -r fist second; do
            echo "$first"
            done < file.txt




            share




























              0














              It's probably because -a is not a POSIX compliant flag support for the read command. It is more likely that zsh does implement the version of read that does not support -a. But you can still get around using variables as placeholders to store the line contents as



              while IFS=' ' read -r fist second; do
              echo "$first"
              done < file.txt




              share


























                0












                0








                0







                It's probably because -a is not a POSIX compliant flag support for the read command. It is more likely that zsh does implement the version of read that does not support -a. But you can still get around using variables as placeholders to store the line contents as



                while IFS=' ' read -r fist second; do
                echo "$first"
                done < file.txt




                share













                It's probably because -a is not a POSIX compliant flag support for the read command. It is more likely that zsh does implement the version of read that does not support -a. But you can still get around using variables as placeholders to store the line contents as



                while IFS=' ' read -r fist second; do
                echo "$first"
                done < file.txt





                share











                share


                share










                answered 6 mins ago









                InianInian

                4,4851025




                4,4851025






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Unix & Linux Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f500537%2fsplit-string-by-space-in-zsh%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Loup dans la culture

                    How to solve the problem of ntp “Unable to contact time server” from KDE?

                    ASUS Zenbook UX433/UX333 — Configure Touchpad-embedded numpad on Linux