Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Command-line arguments ($1, $2, ...) in Bash Scripting - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Command-line arguments ($1, $2, ...)
O(n)
Understanding Time Complexity

When using command-line arguments in a bash script, it's important to know how the script's work changes as you add more arguments.

We want to see how the script's running time grows when it reads and uses these arguments.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

#!/bin/bash

for arg in "$@"; do
  echo "Argument: $arg"
done

# This script prints each command-line argument one by one.

This script loops through all given command-line arguments and prints each one.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Looping through each command-line argument.
  • How many times: Once for each argument provided.
How Execution Grows With Input

Each new argument adds one more loop step, so the work grows steadily with the number of arguments.

Input Size (n)Approx. Operations
1010 echo commands
100100 echo commands
10001000 echo commands

Pattern observation: The work increases directly in proportion to the number of arguments.

Final Time Complexity

Time Complexity: O(n)

This means the script takes longer in a straight line as you add more arguments.

Common Mistake

[X] Wrong: "The script runs in the same time no matter how many arguments there are."

[OK] Correct: Each argument adds a step to the loop, so more arguments mean more work and more time.

Interview Connect

Understanding how loops over inputs affect time helps you explain script efficiency clearly and confidently in real-world tasks.

Self-Check

"What if the script only printed the first argument instead of all? How would the time complexity change?"

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