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


Release history Release notifications

This version
History Node

1.0.0

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
shellvars-1.0.0-py2.py3-none-any.whl (11.5 kB) Copy SHA256 hash SHA256 Wheel 2.7 Sep 2, 2015
shellvars-1.0.0.tar.gz (7.4 kB) Copy SHA256 hash SHA256 Source None Sep 2, 2015

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page