gash/tests/read.org

2.0 KiB
Raw Permalink Blame History

;;; Gash Guile As SHell ;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com> ;;; ;;; This file is part of Gash. ;;; ;;; Gash is free software: you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by ;;; the Free Software Foundation, either version 3 of the License, or ;;; (at your option) any later version. ;;; ;;; Gash is distributed in the hope that it will be useful, ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with Gash. If not, see <http://www.gnu.org/licenses/>.

Reads a single variable

  echo foo | {
      read x
      echo $x
  }

:STDOUT:

  foo

Reads multiple variables

  echo foo bar | {
      read x y
      echo $x
      echo $y
  }

:STDOUT:

  foo
  bar

Handles more variables than fields

  echo foo bar baz | {
      read x y
      echo $x
      echo $y
  }

:STDOUT:

  foo
  bar baz

Handles more fields than variables

  echo foo | {
      read x y
      echo $x
      echo $y
  }

:STDOUT:

  foo

Trims whitespace in extra fields

  echo foo bar 'baz   ' | {
      read x y
      echo $x
      echo $y
  }

:STDOUT:

  foo
  bar baz

Allows escaping line breaks

  echo 'foo\
  bar' | {
      read x
      echo $x
  }

:STDOUT:

  foobar

Understands raw input flag

  echo 'foo\
  bar' | {
      read -r x
      echo $x
  }

:STDOUT:

  foo\