shell

package
v0.9.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 4, 2021 License: Apache-2.0 Imports: 6 Imported by: 150

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildEnvs

func BuildEnvs(env []string) map[string]string

func EqualEnvKeys

func EqualEnvKeys(from, to string) bool

EqualEnvKeys compare two strings and returns true if they are equal. On Unix this comparison is case sensitive. On Windows this comparison is case insensitive.

Types

type Lex

type Lex struct {
	RawQuotes    bool
	RawEscapes   bool
	SkipUnsetEnv bool
	// contains filtered or unexported fields
}

Lex performs shell word splitting and variable expansion.

Lex takes a string and an array of env variables and process all quotes (" and ') as well as $xxx and ${xxx} env variable tokens. Tries to mimic bash shell process. It doesn't support all flavors of ${xx:...} formats but new ones can be added by adding code to the "special ${} format processing" section

func NewLex

func NewLex(escapeToken rune) *Lex

NewLex creates a new Lex which uses escapeToken to escape quotes.

func (*Lex) ProcessWord

func (s *Lex) ProcessWord(word string, env []string) (string, error)

ProcessWord will use the 'env' list of environment variables, and replace any env var references in 'word'.

func (*Lex) ProcessWordWithMap

func (s *Lex) ProcessWordWithMap(word string, env map[string]string) (string, error)

ProcessWordWithMap will use the 'env' list of environment variables, and replace any env var references in 'word'.

func (*Lex) ProcessWords

func (s *Lex) ProcessWords(word string, env []string) ([]string, error)

ProcessWords will use the 'env' list of environment variables, and replace any env var references in 'word' then it will also return a slice of strings which represents the 'word' split up based on spaces - taking into account quotes. Note that this splitting is done **after** the env var substitutions are done. Note, each one is trimmed to remove leading and trailing spaces (unless they are quoted", but ProcessWord retains spaces between words.

func (*Lex) ProcessWordsWithMap

func (s *Lex) ProcessWordsWithMap(word string, env map[string]string) ([]string, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL