Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Read-only variables (readonly) in Bash Scripting - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Read-only variables (readonly)
O(n)
Understanding Time Complexity

We want to understand how the time it takes to run a script changes when using read-only variables in bash.

Specifically, does making a variable read-only affect how long the script takes as it runs?

Scenario Under Consideration

Analyze the time complexity of the following bash script using readonly variables.


#!/bin/bash
readonly MAX=1000
for ((i=1; i<=MAX; i++)); do
  echo "Number: $i"
done

This script sets a read-only variable MAX and loops from 1 to MAX, printing each number.

Identify Repeating Operations

Look at what repeats in the script.

  • Primary operation: The for-loop runs and prints a line each time.
  • How many times: It runs MAX times, which is 1000 here.
How Execution Grows With Input

As MAX grows, the loop runs more times.

Input Size (MAX)Approx. Operations
1010 loops and prints
100100 loops and prints
10001000 loops and prints

Pattern observation: The number of operations grows directly with MAX. Double MAX, double the work.

Final Time Complexity

Time Complexity: O(n)

This means the time grows in a straight line with the size of MAX. More MAX means more loops.

Common Mistake

[X] Wrong: "Making a variable readonly makes the loop run faster or slower."

[OK] Correct: The readonly keyword just prevents changes to the variable. It does not affect how many times the loop runs or how long each loop takes.

Interview Connect

Understanding how readonly variables behave helps you write safer scripts without worrying about performance changes. This shows you can focus on correctness and still predict your script's speed.

Self-Check

"What if we replaced the readonly variable with a normal variable that changes inside the loop? How would the time complexity change?"

Practice

(1/5)
1. What does the readonly command do in a bash script?
easy
A. It prints the value of a variable.
B. It deletes a variable from the script.
C. It makes a variable unchangeable after assignment.
D. It allows a variable to be changed multiple times.

Solution

  1. Step 1: Understand the purpose of readonly

    The readonly command is used to mark a variable so it cannot be changed later in the script.
  2. Step 2: Compare options with the command's function

    Only "It makes a variable unchangeable after assignment." correctly describes that the variable becomes unchangeable after assignment.
  3. Final Answer:

    It makes a variable unchangeable after assignment. -> Option C
  4. Quick Check:

    readonly = makes variable unchangeable [OK]
Hint: Readonly means variable cannot be changed after set [OK]
Common Mistakes:
  • Thinking readonly deletes the variable
  • Confusing readonly with printing variable
  • Assuming readonly allows changes
2. Which of the following is the correct syntax to make a variable MYVAR read-only in bash?
easy
A. readonly MYVAR =value
B. readonly MYVAR
C. MYVAR readonly
D. set readonly MYVAR

Solution

  1. Step 1: Recall the syntax of readonly

    The correct syntax is to first assign the variable, then use readonly MYVAR to make it read-only.
  2. Step 2: Analyze each option

    readonly MYVAR =value tries to assign and readonly together, which is invalid. readonly MYVAR correctly uses readonly MYVAR. Options C and D are not valid bash syntax.
  3. Final Answer:

    readonly MYVAR -> Option B
  4. Quick Check:

    Use readonly VAR after assignment [OK]
Hint: Assign first, then use readonly VAR to lock it [OK]
Common Mistakes:
  • Trying to assign value inside readonly command
  • Placing readonly after variable name
  • Using invalid commands like set readonly
3. What will be the output of this script?
MYVAR=hello
readonly MYVAR
MYVAR=world
echo $MYVAR
medium
A. world
B. Error: cannot modify readonly variable
C. Syntax error
D. hello

Solution

  1. Step 1: Understand the script flow

    The variable MYVAR is assigned "hello" and then made readonly. The script then tries to change it to "world".
  2. Step 2: Predict the behavior when modifying a readonly variable

    Bash will produce an error message when trying to assign a new value to a readonly variable, but the script will continue and the value of MYVAR remains "hello". The echo command outputs the original value.
  3. Final Answer:

    hello -> Option D
  4. Quick Check:

    Readonly variable value remains unchanged; echo prints original value [OK]
Hint: Changing readonly variable causes error message but value unchanged [OK]
Common Mistakes:
  • Assuming variable changes silently
  • Expecting syntax error instead of runtime error
  • Thinking echo prints new value
4. Identify the error in this script:
readonly MYVAR =10
MYVAR=20
echo $MYVAR
medium
A. Cannot assign value during readonly declaration
B. Variable name is invalid
C. Missing export keyword
D. No error, script runs fine

Solution

  1. Step 1: Check the syntax of readonly with assignment

    In bash, readonly cannot be combined with assignment like readonly MYVAR =10. The variable must be assigned first, then made readonly.
  2. Step 2: Analyze the error caused by this syntax

    This syntax causes an error because bash expects only variable names after readonly, not assignments.
  3. Final Answer:

    Cannot assign value during readonly declaration -> Option A
  4. Quick Check:

    Assign first, then readonly VAR separately [OK]
Hint: Assign before readonly; no assignment inside readonly [OK]
Common Mistakes:
  • Trying to assign value inside readonly command
  • Ignoring syntax error messages
  • Confusing export with readonly
5. You want to protect a variable CONFIG_PATH so it cannot be changed accidentally in your script, but you also want to print its value later. Which sequence of commands is correct?
hard
A. CONFIG_PATH=/etc/config readonly CONFIG_PATH echo $CONFIG_PATH
B. readonly CONFIG_PATH=/etc/config echo $CONFIG_PATH
C. CONFIG_PATH=/etc/config echo $CONFIG_PATH readonly CONFIG_PATH
D. echo $CONFIG_PATH CONFIG_PATH=/etc/config readonly CONFIG_PATH

Solution

  1. Step 1: Assign the variable before making it readonly

    You must first assign CONFIG_PATH a value, then use readonly to lock it.
  2. Step 2: Print the variable after it is readonly

    Printing the variable after making it readonly is valid and will show the assigned value.
  3. Final Answer:

    CONFIG_PATH=/etc/config readonly CONFIG_PATH echo $CONFIG_PATH -> Option A
  4. Quick Check:

    Assign, then readonly, then print [OK]
Hint: Assign first, readonly second, then use variable [OK]
Common Mistakes:
  • Trying to assign inside readonly
  • Printing variable before assignment
  • Making variable readonly before assignment
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