Skip to main content

Evaluator for common shell variable expressions

Project description

Homepage:Shellvars Homepage
Download:Shellvars on PyPI
Documentation:Shellvars Docs
License:MIT License
Support:Mailing list (testing-in-python@lists.idyll.org)
Issue tracker:Github Issues
Build status:https://travis-ci.org/testing-cabal/shellvars.svg?branch=master

Shellvars

A Python interpreter for shell variable expressions.

shellvars supports Python 2.6 and up, and should support Jython etc as well.

The following expressions are supported:

  • $NAME
  • ${NAME}
  • ${NAME:-REPLACEMENT}
  • ${NAME-REPLACEMENT}
  • ${NAME:=REPLACEMENT}
  • ${NAME=REPLACEMENT}
  • ${NAME:?[ERRORMSG]}
  • ${NAME?[ERRORMSG]}
  • ${NAME:+REPLACEMENT}
  • ${NAME+REPLACEMENT}

Recursive expressions are supported too. For instance:

>>> from shellvars import evaluate
>>> evaluate('${foo:-${bar:=baz}}', {})
('baz', {'bar': 'baz'})

For details on shell variable syntax, consult your shell or Posix documentation.

Usage

To evaluate an expression call evaluate with the expression and any variables you want available to the expression. Variables keys and values must both be strings. Variables that are missing from your variable dict are considered ‘unset’ in shell terms.

The return is an evaluated string and any variable assignments performed by the expression.

Preserving unset expressions

shellvars has a special mode where expressions that are for unset variables are preserved rather than evaluated. This permits passing them onto a real shell to interpret without needing special quoting from the user. For instance:

>>> from shellvars import SKIP
>>> evaluate('$foo $bar', {'foo': 'baz'}, absent=SKIP)
('baz $bar', {})

Installation

Use pip to install:

pip install shellvars

Development

Install the test dependencies via pip:

pip install .[test]

Push up changes as PR’s to the GitHub repository.

Bug tracker

Use the GitHub issue tracker.

Releasing

Use semver for version decisions.

To release:

  1. Tag the repo e.g. 1.2.3
  2. Build a signed sdist and wheel
  3. Upload to PyPI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for shellvars, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size shellvars-1.0.0-py2.py3-none-any.whl (11.5 kB) File type Wheel Python version 2.7 Upload date Hashes View
Filename, size shellvars-1.0.0.tar.gz (7.4 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page