gash/tests/assignments.org

2.7 KiB
Raw Permalink Blame History

;;; Gash Guile As SHell ;;; Copyright © 2016, 2017, 2018 R.E.W. van Beusekom <rutger.van.beusekom@gmail.com> ;;; Copyright © 2018, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; 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/>.

assignment-backtick

  obj=ar.o
  objs="$objs `basename $obj`"
  echo "objs:>$objs<"

:STDOUT:

  objs:> ar.o<

assignment-doublequoted-doublequotes

  aliaspath=alias
  localedir=locale
  defines="-DALIASPATH=\"${aliaspath}\" -DLOCALEDIR=\"${localedir}\""
  echo cc $defines

:STDOUT:

  cc -DALIASPATH="alias" -DLOCALEDIR="locale"

assignment-double-quote

  srcdir="."

assignment-echo

  SHELL=/bin/bash
  echo $SHELL

:STDOUT:

  /bin/bash

assignment-empty

  a=
  echo a:$a

:STDOUT:

  a:

assignment

  SHELL=/bin/bash

assignment-singlequote

  srcdir='.'

assignment-variable-word

  SHELL=gash
  bin=${SHELL}/bin
  echo $bin

:STDOUT:

  gash/bin

assignment-word-variable

  SHELL=gash
  PATH=bin:${SHELL}
  echo $PATH

:STDOUT:

  bin:gash

Assignments reset exit status

  set +e
  false
  x=foobar

Assigning exit status works

  set +e
  false
  x=$?
  echo $x

:STDOUT:

  1

Assignments use command substitutions for exit status

  set +e
  x=$(false)
  echo $?
  x=$(true)
  echo $?

:STDOUT:

  1
  0

Assignments update exit status on the fly

  set +e
  false
  x=$? y=$(true) z=$?
  echo $x $z

:STDOUT:

  1 0