Foundations Updated 2026-09 View as Markdown

Special Variables

In last tutorial about shell function, you use “$1” represent the first argument passed to functionA.

In last tutorial about shell function, you use “$1” represent the first argument passed to function_A. Moreover, here are some special variables in shell:

  • $0 - The filename of the current script.
  • $n - The Nth argument passed to script was invoked or function was called.
  • $# - The number of argument passed to script or function.
  • $@ - All arguments passed to script or function.
  • $* - All arguments passed to script or function.
  • $? - The exit status of the last command executed.
  • $$ - The process ID of the current shell. For shell scripts, this is the process ID under which they are executing.
  • $! - The process number of the last background command.

Example:#

shell
#!/bin/bash
echo "Script Name: $0"
function func {
    for var in $*
    do
        let i=i+1
        echo "The \$${i} argument is: ${var}"
    done
    echo "Total count of arguments: $#"
}
func We are argument

$@ and $* have different behavior when they were enclosed in double quotes.

shell
#!/bin/bash
function func {
    echo "--- \"\$*\""
    for ARG in "$*"
    do
        echo $ARG
    done

    echo "--- \"\$@\""
    for ARG in "$@"
    do
        echo $ARG
    done
}
func We are argument

Get the Bash agent pack

A battle-tested AGENTS.md, the review checklist, and the failure-mode cheat sheet for Bash. One email, then occasional updates when the tooling shifts. No course pitch.

Unsubscribe in one click. We never sell the list. Or just take the AGENTS.md now — no email needed.