Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Command-line arguments ($1, $2, ...) in Bash Scripting - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does $1 represent in a bash script?
$1 is the first command-line argument passed to the script when you run it.
Click to reveal answer
beginner
How do you access the second command-line argument in a bash script?
You use $2 to get the second argument passed to the script.
Click to reveal answer
beginner
What does $# mean in a bash script?
$# gives the number of command-line arguments passed to the script.
Click to reveal answer
intermediate
How can you access all command-line arguments as a single string?
Use $* to get all arguments as one string separated by spaces.
Click to reveal answer
intermediate
What is the difference between $* and $@ in bash?
$* treats all arguments as a single word, while $@ treats each argument as a separate word, especially when quoted.
Click to reveal answer
In a bash script, what does $3 represent?
AThe third command-line argument
BThe total number of arguments
CThe script name
DThe first command-line argument
Which variable holds the number of command-line arguments in a bash script?
A$0
B$*
C$@
D$#
How do you access the script's own name inside a bash script?
A$#
B$1
C$0
D$@
What is the output of echo "$*" if the script is run with arguments: apple banana cherry?
Aapplebanana cherry
Bapple banana cherry
Capple,banana,cherry
Dapple
Which is true about "$@" in bash?
AIt treats each argument as a separate quoted string
BIt combines all arguments into one string
CIt counts the number of arguments
DIt holds the script name
Explain how to use command-line arguments in a bash script and how to access the first three arguments.
Think about how you run a script with extra words after the script name.
You got /5 concepts.
    Describe the difference between $* and $@ in bash scripting when handling multiple arguments.
    Consider how quoting affects the way arguments are grouped.
    You got /5 concepts.

      Practice

      (1/5)
      1. What does $1 represent in a bash script?
      easy
      A. The last command-line argument passed to the script
      B. The total number of arguments passed to the script
      C. The name of the script file
      D. The first command-line argument passed to the script

      Solution

      1. Step 1: Understand command-line arguments in bash

        In bash scripts, $1 refers to the first argument given after the script name.
      2. Step 2: Differentiate from other special variables

        $# is the count of arguments, $0 is the script name, and $@ is all arguments.
      3. Final Answer:

        The first command-line argument passed to the script -> Option D
      4. Quick Check:

        $1 = first argument [OK]
      Hint: Remember $1 is always the first argument after script name [OK]
      Common Mistakes:
      • Confusing $1 with $# (argument count)
      • Thinking $1 is the script name
      • Mixing $1 with $0 or $@
      2. Which of the following is the correct way to access the third argument in a bash script?
      easy
      A. $0
      B. $2
      C. $3
      D. $#

      Solution

      1. Step 1: Recall argument numbering in bash

        Arguments start from $1 for the first, so the third argument is $3.
      2. Step 2: Identify incorrect options

        $2 is second argument, $# is count, $0 is script name.
      3. Final Answer:

        $3 -> Option C
      4. Quick Check:

        Third argument = $3 [OK]
      Hint: Count arguments starting at $1, so third is $3 [OK]
      Common Mistakes:
      • Using $2 instead of $3 for third argument
      • Confusing $# with argument value
      • Using $0 which is script name
      3. What will be the output of this script if run as ./script.sh apple banana cherry?
      echo "First: $1"
      echo "Second: $2"
      echo "Count: $#"
      medium
      A. First: apple Second: banana Count: 3
      B. First: apple Second: cherry Count: 3
      C. First: ./script.sh Second: apple Count: 3
      D. First: banana Second: cherry Count: 2

      Solution

      1. Step 1: Identify argument values

        Arguments are apple ($1), banana ($2), cherry ($3). Script name is $0.
      2. Step 2: Understand output commands

        echo prints $1 as apple, $2 as banana, and $# as 3 (number of arguments).
      3. Final Answer:

        First: apple Second: banana Count: 3 -> Option A
      4. Quick Check:

        Arguments match output [OK]
      Hint: Remember $1, $2 are first and second args; $# is count [OK]
      Common Mistakes:
      • Mixing script name ($0) with arguments
      • Confusing argument order
      • Miscounting number of arguments
      4. Given this script snippet:
      echo "Argument 1: $1"
      echo "Argument 2: $2"
      What is the error if you run the script without any arguments?
      medium
      A. Script prints empty lines for $1 and $2
      B. No output is printed
      C. Script throws a syntax error
      D. Script prints the script name instead of arguments

      Solution

      1. Step 1: Understand missing arguments behavior

        If no arguments are passed, $1 and $2 are empty strings, not errors.
      2. Step 2: Check script output

        echo prints "Argument 1: " and "Argument 2: " with nothing after colon.
      3. Final Answer:

        Script prints empty lines for $1 and $2 -> Option A
      4. Quick Check:

        Missing args = empty $1, $2 [OK]
      Hint: No args means $1, $2 are empty, no errors [OK]
      Common Mistakes:
      • Expecting syntax or runtime error
      • Thinking script name prints as argument
      • Assuming no output at all
      5. You want a bash script to print all arguments passed to it, each on a new line, using only $1, $2, etc. Which approach works best?
      hard
      A. Use a loop with a counter and access arguments by $1, $2, ... until counter > $#
      B. Use shift command in a loop to access each argument and print it
      C. Use $0 to print all arguments one by one
      D. Use echo $@ to print all arguments on one line

      Solution

      1. Step 1: Understand how to access all arguments one by one

        Using shift moves arguments left, so $1 becomes next argument each time.
      2. Step 2: Compare options

        Use a loop with a counter and access arguments by $1, $2, ... until counter > $# is complex and error-prone; Use echo $@ to print all arguments on one line prints all on one line; Use $0 to print all arguments one by one prints script name; Use shift command in a loop to access each argument and print it correctly loops and prints each argument on new line.
      3. Final Answer:

        Use shift command in a loop to access each argument and print it -> Option B
      4. Quick Check:

        Shift loops through args one by one [OK]
      Hint: Use shift in loop to print each argument separately [OK]
      Common Mistakes:
      • Using $0 instead of arguments
      • Trying to manually count without shift
      • Printing all args on one line instead of separate lines
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard