Positional Arguments In Bash VS Posh (Powershell)

The aim of this page📝 is to compare positional args handling in bash VS posh (PowerShell) — as part of learning bash. Always good to get a feel of the differences between languages.

1. bash

all args with $*

  • is a special variable holding all of the passed arguments to the script via CLI
prnt(){
echo "you passed me" $*
}
>>> prnt fd fd dssddd fdfd
you passed me fd fd dssddd fdfd

one arg with $<n>

  • is a special variable that denotes the first arg passed to the script via CLI
prnt(){
echo "you passed me" $1
}
>>> prnt fd fd dssddd fdfd
you passed me fd

2. posh

all args with $args

  • in PowerShell you don’t number the arguments passed, those go into array and you can iterate over them
Function search-google {
$query = 'https://www.google.com/search?q='
$args | % { $query = $query + "$_+" }
$url = $query.Substring(0, $query.Length - 1)
start "$url"
}
>>> search-google hello my friends

one $args[n]

function prr() {write-host $args[0]}
# prr rr tt ss
# >>> rr

3. links

Technical Support Engineer of Behavioural Data Platform (Snowplow Analytics). On comparison of programming languages, history of computing, and raw playbooks.