Interview › Scripting (Bash, Groovy)
What are the positional parameters $1, $2, and what are $@, $#, $0, $$, $?, $!? [Basic]
Answer
$1, $2, and so on are positional arguments. $@ represents all arguments, $# is the argument count, $0 is the script name, $$ is the current shell PID, $? is the last exit code, and $! is the PID of the most recent background command.
Technical explanation
These special parameters are central to writing reusable command-line scripts.
Use "$@" to forward arguments safely while preserving argument boundaries.
Capture $? immediately after the command you care about, because any later command overwrites it.
Hands-on example
#!/usr/bin/env bash
echo "script: $0"
echo "first arg: ${1:-missing}"
echo "arg count: $#"
for arg in "$@"; do echo "arg=[$arg]"; done
sleep 30 &
echo "background pid: $!
Check how well your resume matches the role with our free resume checker— match score, ATS check, and the skills you're missing.
More Scripting (Bash, Groovy) interview questions
- What is the purpose of the shebang line, and what does #!/bin/bash do? [Basic]
- What is the difference between sh and bash? [Basic]
- How do you make a script executable and run it? [Basic]
- What is the difference between running a script with ./script.sh, bash script.sh, and source script.sh? [Basic]
- What does sourcing a script do differently from executing it? [Basic]
- How do you declare a variable in Bash, and why are spaces around = not allowed? [Basic]
- What is the difference between $var and ${var}? [Basic]
- What is the difference between single quotes and double quotes in Bash? [Basic]