Public bug reported:

tc.sh:

    set -x
    set -e
    cat >tc.in <<\EOF
    one eins
    two zwei
    three drei
    EOF
    
    while IFS=' ' read a b; do
            #  $a = t* and it works
            [[ $a = o* ]] && echo $b
    done <tc.in | sort -u >tc.out
    
    echo after the loop
    cat tc.out
    echo and out

This works with t* both with set ±o pipefail, and with t* in ksh93, but
t* in mksh with set -o pipefail makes it error out *after* the “while”
because the last comparison error’d out.

Workarounds include negating the comparison…

            [[ $a != o* ]] || echo $b

… so that the loop always has $?=0, or:

    while :; do
            IFS=' ' read a b || break

Interestingly enough, removing the “| sort -u” also makes it work.

** Affects: mksh
     Importance: Medium
     Assignee: Thorsten Glaser (mirabilos)
         Status: Triaged

-- 
You received this bug notification because you are a member of mksh
Mailing List, which is subscribed to mksh.
Matching subscriptions: mkshlist-to-mksh-bugmail
https://bugs.launchpad.net/bugs/1804504

Title:
  -o pipefail makes while read loop ugly

Status in mksh:
  Triaged

Bug description:
  tc.sh:

      set -x
      set -e
      cat >tc.in <<\EOF
      one eins
      two zwei
      three drei
      EOF
      
      while IFS=' ' read a b; do
              #  $a = t* and it works
              [[ $a = o* ]] && echo $b
      done <tc.in | sort -u >tc.out
      
      echo after the loop
      cat tc.out
      echo and out

  This works with t* both with set ±o pipefail, and with t* in ksh93,
  but t* in mksh with set -o pipefail makes it error out *after* the
  “while” because the last comparison error’d out.

  Workarounds include negating the comparison…

              [[ $a != o* ]] || echo $b

  … so that the loop always has $?=0, or:

      while :; do
              IFS=' ' read a b || break

  Interestingly enough, removing the “| sort -u” also makes it work.

To manage notifications about this bug go to:
https://bugs.launchpad.net/mksh/+bug/1804504/+subscriptions

Reply via email to